Ads Manager Komut Dosyaları

Google Ads komut dosyalarındaki AdsManagerApp sınıfı, Yönetici Hesabınız altında bağlı hesapları yönetmenize olanak tanır. Her hesap için ayrı bir komut dosyası oluşturmak yerine, tüm reklamveren hesaplarınızı tek bir komut dosyası aracılığıyla yönetebilirsiniz.

Hesap listesini al

Bir yönetici hesabı altındaki hesapları accounts yöntemini kullanarak alabilirsiniz. Örneğin:

const accountSelector = AdsManagerApp.accounts()
    .withCondition('customer_client.descriptive_name = "My Account"');

const accountIterator = accountSelector.get();

Alınabilecek hesaplarla ilgili bazı kısıtlamalar vardır:

  • Çok düzeyli bir hiyerarşiniz varsa yönetici hesapları alınamaz. Yalnızca müşteri hesapları seçilebilir.
  • Varsayılan olarak kapatılmış, iptal edilmiş ve askıya alınmış hesaplar döndürülmez. withCondition yöntemini çağırarak customer_client.status için farklı bir filtre belirterek bu davranışı geçersiz kılabilirsiniz.

accounts çağrısı, varsayılan olarak yönetici hesabı hiyerarşisindeki tüm müşteri hesaplarının listesini alır. Komut dosyanızın aldığı hesap sayısını kısıtlamak için ManagedAccountSelector sınıfının withLimit yöntemini kullanabilirsiniz. Diğer bir seçenek de withIds yöntemini kullanarak hesapları müşteri kimliklerine göre seçmektir:

// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
    .withIds(['123-456-7890', '234-567-8901', '345-678-9012']);

Müşteri hesaplarında çalışma

Müşteri hesaplarını aldıktan sonra, yinelemenin hasNext ve next yöntemlerini kullanarak yinelemeler gerçekleştirebilirsiniz. Yürütme bağlamını bir müşteri hesabına geçirmek için select yöntemini kullanmanız gerekir. Bir müşteri hesabı seçtikten sonra, siz açıkça başka bir hesap seçene kadar diğer API çağrıları müşteri hesabına uygulanır:

// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();

// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds

// Iterate through the list of accounts
for (const account of accountIterator) {
  // Select the client account.
  AdsManagerApp.select(account);

  // Select campaigns under the client account
  const campaignIterator = AdsApp.campaigns().get();

  // Operate on client account
  ...
}

Hesaplar üzerinde paralel olarak çalışma

Google Ads komut dosyaları, ManagedAccountSelector sınıfının executeInParallel yöntemini kullanarak birden fazla müşteri hesabında paralel olarak işlem yapmanıza olanak tanır. executeInParallel yöntemi aşağıdaki imzaya sahiptir:

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

executeInParallel yöntemi, ManagedAccountSelector ile eşleşen her ManagedAccount öğesinde functionName tarafından belirtilen bir işlevi yürütür. Tüm hesaplar işlendikten sonra, geri çağırma işlevi optionalCallbackFunctionName tarafından belirtilirse bir kez yürütülür ve sonraki işlemler için bağımsız değişken olarak bir ExecutionResult nesnesi listesi iletir. Tipik kullanım aşağıda gösterilmiştir:

function main() {
  const accountSelector = AdsManagerApp.accounts()
      .withLimit(50)
      .withCondition('customer_client.currency_code = "USD"');

  accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}

function processClientAccount() {
  const clientAccount = AdsApp.currentAccount();

  // Process your client account here.
  ...

  // optionally, return a result, as text.
  return "";
}

function afterProcessAllClientAccounts(results) {
  for (const result of results) {
    // Process the result further
    ...
  }
}

functionName tarafından belirtilen işlev, isteğe bağlı olarak dize bağımsız değişkenini (optionalInput) kabul edebilir. Bu parametre, executeInParallel tarafından çağrılan tüm paralel yöntemlere ek bir parametre aktarmak için kullanılabilir:

function main() {
  const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
  const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
  accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}

function processClientAccount(sharedParameter) {
  // Process your client account here.
  ...
}

Hesaba özgü ayarlar içeren bir JavaScript yapılandırma nesnesi iletmek isterseniz bunu önce JSON.stringify yöntemini kullanarak bir dizeye dönüştürebilirsiniz:

function main() {
  ...
  const accountFlags = {
    '1234567890': {
       'label': 'Brand 1 campaigns',
     },
    '3456787890': {
       'label': 'Brand 2 campaigns',
     }
  };
  accountSelector.executeInParallel("processClientAccount", null,
      JSON.stringify(accountFlags));
  ...
}

function processClientAccount(sharedParameter) {
  const accountFlags = JSON.parse(sharedParameter);
  // Process your client account here.
  ...
}

Ayrıca functionName tarafından belirtilen işlev, JSON.stringify üzerinden nesne yerine dize de döndürebilir:

function processClientAccount() {
  ...
  const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
  return JSON.stringify(jsonObj);
}

Döndürülen değerler, ExecutionResult nesne listesindeki geri çağırma işlevine aktarılır. İşlevden bir JSON dizesi döndürdüyseniz JSON.parse yöntemini kullanarak bunu tekrar bir JavaScript nesnesine dönüştürebilirsiniz:

function callbackFunctionName(results) {
  for (var i = 0; i < results.length; i++) {
    var resultObj = JSON.parse(results[i].getReturnValue());
  }
}

executeInParallel yöntemi en fazla 50 accounts üzerinde çalışır. Bu nedenle, komut dosyanızın aldığı hesap sayısını sınırlandırmak için kendi kısıtlamalarınızı uygulamanız gerekir. Komut dosyanızın aldığı hesap sayısını kısıtlamak için ManagedAccountSelector sınıfının withLimit veya withIds yöntemini kullanabilirsiniz.

Yürütme süresi sınırları

Ads Manager komut dosyaları yürütme süresi sınırları hakkında ayrıntılar için bu sayfaya bakın.