0

我试图编写一个脚本,它将:

  1. 遍历 MCC 中的所有帐户并选择名称中包含“SEM”的帐户。
  2. 遍历帐户中的广告系列并选择满足特定条件的广告系列。
  3. 通过电子邮件将这些活动的列表发送给我自己。

我遇到的问题是将帐户循环链接到活动循环。

所以我的问题是;在 AdWords 脚本中使用campaignSelector 时如何指定一个AdWords 帐户?

如果我可以为活动迭代指定帐户(而不是脚本默认为脚本所在的帐户),我可以在其中放置一个包含我选择的帐户的数组。

谢谢。

到目前为止的脚本:

//This code is to be placed in an MCC, sift through accounts in that MCC that fit a certain criteria
//then in those selected accounts, sift through the campaigns that fit a certain criteria and add
//these to a report (report code yet to be added)
//The problem we have is getting the campaignSelector() function to ‘look’ at the account that has been passed through from the accountIterator() function

function main() {

 var mccAccount = AdWordsApp.currentAccount();
var childAccounts = MccApp.accounts();


 function accountIterator() 
  {
   var accountSelector = MccApp.accounts()
   .withCondition("AccountDescriptiveName CONTAINS 'SEM'")
   .withCondition("Status = ENABLED");

   var accountIterator = accountSelector.get();

   while (accountIterator.hasNext())
   {
     var account = accountIterator.next();
     var accountName = account.getName();
     Logger.log(accountName);
     campaignSelector(accountName);  //This might be really wrong....
                                     //Need to pass the account name through to the campaignSelector function 
                                     //so that the campaignSelector functions looks at the campaigns in the highlighted account
   }
  }


 function campaignSelector () 
    {
    //SELECT campaigns we're interested in
    var account = AdWordsApp.currentAccount(); //Guessing that we might need to use this?
    var campaignSelector = AdWordsApp.campaigns()
    .withCondition("CampaignName CONTAINS 'Shoop'")
    .withCondition("SearchExactMatchImpressionShare < 95")
    .forDateRange("LAST_7_DAYS")
    .withCondition("Status = ENABLED");

    //GET an iterator to list the selected campaigns
    var campaignIterator = campaignSelector.get();

    //ITERATE through all selected campaigns
    while (campaignIterator.hasNext()) 
     {
       var campaign = campaignIterator.next();
       //Add campaign and account info to a report – to be coded seperately
    }
  }
}
4

2 回答 2

0

您可以使用这部分代码在您的代码之前选择一个具有特定条件的帐户。我希望它有帮助

var mccAccount = AdWordsApp.currentAccount();


while (accountIterator.hasNext()) {
  var account = accountIterator.next();
  if("condition to get certain account"){
    // Select the client account.
    MccApp.select(account);
  }
}

// Select campaigns under the client account
var campaignIterator = AdWordsApp.campaigns().get();
于 2017-04-08T15:10:49.323 回答
0

我会做这样的事情:

function main() {

  var mccAccount = AdWordsApp.currentAccount();
  var childAccounts = MccApp.accounts();

  var accountIterator = MccApp.accounts().get();
  while (accountIterator.hasNext())
  {
    var account = accountIterator.next();
    campaignSelector(account);
  }
}

function campaignSelector(account) {
  MccApp.select(account); // open the account that we've acquired in the previous function

  var accountName = account.getName();

  var campaignSelector = AdWordsApp.campaigns()
  .withCondition("CampaignName CONTAINS 'Shoop'")
  .withCondition("SearchExactMatchImpressionShare < 95")
  .forDateRange("LAST_7_DAYS")
  .withCondition("Status = ENABLED");

  var campaignIterator = campaignSelector.get();

  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    // Reporting
  }
}

我认为您给我们的代码中的主要问题是缺少MccApp.select功能。

于 2017-04-17T20:32:49.543 回答