Как указать учетную запись AdWords при использовании campaignSelector в сценариях AdWords?
Я попытался написать скрипт, который будет:
- Переберите все учетные записи в MCC и выберите те, в имени которых есть "SEM".
- Выполните итерацию кампаний в учетной записи и выберите те, которые соответствуют определенным условиям.
- Отправьте мне список этих кампаний по электронной почте.
У меня есть проблема с привязкой цикла аккаунта к циклу кампании.
Итак, мой вопрос: Как указать учетную запись 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
функция.