2013年2月28日,星期四

标签倒计时忽略新元素

罗伯特 在我的一个脚本中询问了如何忽略最近添加到他的帐户中的关键字。不幸的是,尽管我认为有一种使用标签的方法,但是API并没有为您提供一种很好的方法。

因此,我整理了以下脚本,您可以使用该脚本为要在脚本中忽略的元素自动创建基于标签的倒计时。每次向帐户添加新元素时,都可以使用格式LABEL_PREFIX_对其应用标签。因此,如果您希望脚本在30天内忽略一个新元素,请将标签“ days_left_30”应用于该元素。如果您计划脚本每天运行,则标签上剩余的天数将每天减少一天。天数达到零后,标签将从实体中删除。

在要忽略新元素的脚本中,将以下函数添加到脚本底部(最后一个花括号之前):

  function _build_label_list() {
    //Build a list of 标签 to exclude in your .withCondition()
    var LABEL_PREFIX = 'days_left_'; 
    var 标签_iter = AdWordsApp.labels().withCondition("Name STARTS_WITH '"+LABEL_PREFIX+"'").get();
    var 标签_array = [];
    while(label_iter.hasNext()) { 标签_array.push(label_iter.next().getName()); }
    return "'"+label_array.join("','")+"'"
  }

And then 广告 d the following
.withCondition("LabelNames CONTAINS_NONE ["+_build_label_list()+"]")
to any iterators you have in your other 剧本. Good luck, and if you have any 题s, feel free to ask.

谢谢,
拉斯

//-----------------------------------
// Label Countdown
// Created By: 拉斯 Savage
// FreeAdWordsScripts.com
//-----------------------------------
function main() {
  var LABEL_PREFIX = "days_left_"; // you can change this if you want
  
  // First lets build a list of 标签 to work with
  var 标签_iter = AdWordsApp.labels().withCondition("Name STARTS_WITH '"+LABEL_PREFIX+"'").get();
  var 标签_array = [];
  while(label_iter.hasNext()) {
    标签_array.push(label_iter.next().getName());
  }
  if(labels_array.length > 0) { 
    var 标签_str = "['" + 标签_array.join("','") + "']";
    // grab all the 关键字 with the 标签 we want to 倒数
    var kw_iter = AdWordsApp.keywords().withCondition("LabelNames CONTAINS_ANY "+labels_str).get();
    
    while(kw_iter.hasNext()) {
      var kw = kw_iter.next();
      var l_iter = kw.labels().withCondition("Name STARTS_WITH '"+LABEL_PREFIX+"'").get();
      var 标签 = l_iter.next(); // lazy here because we know this 关键词 has a 标签
      var days_left = parseInt(label.getName().substr(LABEL_PREFIX.length)) - 1;
      kw.removeLabel(label.getName());
      if(days_left != 0) {
        var new_label_name = LABEL_PREFIX+days_left;
        // Create a new 标签 if it doesn't exist
        if(labels_array.indexOf(new_label_name) == -1) {
          AdWordsApp.createLabel(new_label_name);
          标签_array.push(new_label_name);
        }
        kw.applyLabel(new_label_name);
      }
    }
  }
}

5条评论: