Google Ads komut dosyalarındaki
AdsManagerApp
sınıfı, yönetici hesabınızda 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ı üzerinden yönetebilirsiniz.
Hesap listesini alma
accounts
yöntemini kullanarak bir yönetici hesabı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.
withCondition
çağırarak vecustomer_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şisi altındaki tüm müşteri hesaplarının listesini alır. Komut dosyanızın aldığı hesap sayısını sınırlamak için withLimit
sınıfının
ManagedAccountSelector
yöntemini kullanabilirsiniz. Diğer bir seçenek ise 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, 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, başka bir hesabı açıkça seçene kadar 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ı şöyledir:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
executeInParallel
yöntemi, functionName
tarafından belirtilen bir işlevi, ManagedAccountSelector
öğesinin eşleştiği her ManagedAccount
üzerinde 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şlem için ExecutionResult
nesnelerinin listesini bağımsız değişken olarak iletir. 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
ile 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öntemlere 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 bunu 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
nesnelerinin listesinde geri çağırma işlevine iletilir. İşlevden bir JSON dizesi döndürdüyseniz JSON.parse
yöntemini kullanarak dizeyi 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ırlamak için kendi kısıtlamalarınızı uygulamanız gerekir. Komut dosyanızın aldığı hesap sayısını sınırlamak için withLimit
veya withIds
ManagedAccountSelector
sınıfı yöntemini kullanabilirsiniz.
Yürütme süresi sınırları
Ads Manager komut dosyası yürütme süresi sınırlarıyla ilgili ayrıntılar için sınırlarla ilgili dokümanlara bakın.