La
AdsManagerApp
dans les scripts Google Ads vous permet de gérer les comptes associés à votre compte
Compte administrateur. Vous pouvez gérer
tous vos comptes d'annonceur via un seul script, au lieu de créer
un script distinct pour chaque compte.
Récupérer la liste des comptes
Vous pouvez récupérer des comptes sous un compte administrateur à l'aide de la méthode accounts
, par exemple :
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
Certaines restrictions s'appliquent aux comptes qui peuvent être récupérés:
- Impossible de récupérer les comptes administrateur si vous disposez d'un compte la hiérarchie. Seuls les comptes client peuvent être sélectionnés.
- Par défaut, les comptes clôturés, annulés et suspendus ne sont pas renvoyés. Vous pouvez remplacer ce comportement en appelant
withCondition
en spécifiant un filtre différent pourcustomer_client.status
.
L'appel accounts
récupère la liste de tous les comptes client sous le paramètre
du compte administrateur par défaut. Vous pouvez utiliser la méthode withLimit
de la classe ManagedAccountSelector
pour limiter le nombre de comptes récupérés par votre script. Autre
consiste à sélectionner les comptes en fonction de leur numéro client à l'aide des
withIds
méthode:
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Gérer des comptes client
Une fois que vous avez récupéré les comptes client, vous pouvez les itérer à l'aide des méthodes hasNext
et next
de l'itérateur. Vous devez utiliser la méthode select
pour définir le contexte d'exécution sur un compte client. Une fois que vous avez sélectionné un compte client, tous les autres appels d'API s'appliquent à ce compte jusqu'à ce que vous sélectionniez explicitement un autre compte :
// 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
...
}
Travailler sur plusieurs comptes en parallèle
Les scripts Google Ads vous permettent d'intervenir sur plusieurs comptes clients en parallèle à l'aide du
executeInParallel
de la classe
ManagedAccountSelector
. La méthode executeInParallel
a la signature suivante:
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
La méthode executeInParallel
exécute une fonction spécifiée par functionName
.
à chaque
ManagedAccount
que le
ManagedAccountSelector
correspond. Une fois tous les comptes traités, la fonction de rappel, si elle est spécifiée par optionalCallbackFunctionName
, est exécutée une fois, en transmettant une liste d'objets ExecutionResult
comme argument pour tout traitement ultérieur. Voici un exemple d'utilisation type :
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
...
}
}
La fonction spécifiée par functionName
peut éventuellement accepter un argument de chaîne (optionalInput
). Ce paramètre peut être utilisé pour transmettre un paramètre supplémentaire à toutes les méthodes parallèles appelées par executeInParallel
:
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.
...
}
Si vous souhaitez transmettre un objet de configuration JavaScript contenant
des paramètres spécifiques au compte, vous pouvez d'abord la convertir en chaîne à l'aide de la méthode
JSON.stringify
méthode:
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.
...
}
La fonction spécifiée par functionName
peut également renvoyer une chaîne au lieu d'une
via un objet
JSON.stringify
:
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
Les valeurs renvoyées sont transmises à la fonction de rappel dans une liste
ExecutionResult
d'objets. Si la fonction renvoie une chaîne JSON, vous pouvez la convertir
dans un objet JavaScript
JSON.parse
méthode:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
La
executeInParallel
fonctionne sur un maximum de 50
accounts
,
Vous devrez donc implémenter vos propres restrictions pour limiter le nombre
comptes récupérés par votre script. Vous pouvez utiliser la méthode withLimit
ou withIds
de la classe ManagedAccountSelector
pour limiter le nombre de comptes récupérés par votre script.
Limites de temps d'exécution
Consultez cette page pour en savoir plus des détails sur les limites de temps d'exécution des scripts Ads Manager.