Ads Manager Komut Dosyaları

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

Hesap listesini alma

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

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

const accountIterator = accountSelector.get();

Kurtarılabilecek 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ılan, iptal edilen ve askıya alınan hesaplar döndürülmez. customer_client.status için farklı bir filtre belirterek withCondition yöntemini çağırıp bu davranışı geçersiz kılabilirsiniz.

accounts çağrısı, varsayılan olarak yönetici hesabı hiyerarşisi altındaki 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ı üzerinde çalışma

Müşteri hesaplarını aldıktan sonra, yineleyicinin hasNext ve next yöntemlerini kullanarak bu hesaplar arasında yineleme yapabilirsiniz. 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, açıkça başka bir hesap seçmediğiniz sürece tüm API çağrıları müşteri hesabı için geçerli olur:

// 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 Search and Display campaigns under the client account
  const campaignIterator = AdsApp.campaigns().get();

  // Operate on client account
  ...
}

Hesaplar üzerinde paralel çalışma

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

function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);

executeInParallel yöntemi, ManagedAccountSelector öğesinin eşleştiği her ManagedAccount için functionName tarafından belirtilen bir işlevi yürütür. Tüm hesaplar işlendikten sonra, optionalCallbackFunctionName tarafından belirtilmişse geri çağırma işlevi bir kez yürütülür ve ek işleme için bağımsız değişken olarak ExecutionResult nesnelerinin listesini geçirir. Tipik kullanım şekli burada gösterilmektedir:

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 bir dize bağımsız değişkeni (optionalInput) kabul edebilir. Bu parametre, executeInParallel tarafından çağrılan tüm paralel yöntem çağrılarına ek bir parametre iletmek 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 özel ayarlar içeren bir JavaScript yapılandırma nesnesi iletmek istiyorsanız önce JSON.stringify yöntemini kullanarak bu nesneyi 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.
  ...
}

functionName ile belirtilen işlev, JSON.stringify aracılığıyla 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 nesneleri listesinde geri çağırma işlevine iletilir. İşlevden bir JSON dizesi döndürdüyseniz JSON.parse yöntemini kullanarak dizeyi tekrar 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ırlamak 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 dosyası yürütme süresi sınırları hakkında ayrıntılı bilgi için sınırlarla ilgili dokümanları inceleyin.