Как указать учетную запись AdWords при использовании campaignSelector в сценариях AdWords?

Я попытался написать скрипт, который будет:

  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
    }
  }
}

2 ответа

Вы можете использовать эту часть кода, чтобы выбрать одну учетную запись с определенным условием перед вашим кодом. Я надеюсь, что это помогает

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();

Я бы сделал что-то вроде этого:

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 функция.

Другие вопросы по тегам