La classe des scripts Google Ads vous permet de gérer les comptes associés à votre
compte administrateur.AdsManagerApp Vous pouvez gérer tous vos comptes annonceur à l'aide d'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 les comptes d'un compte administrateur à l'aide de la
accounts
méthode, 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 :
- Les comptes administrateur ne peuvent pas être récupérés si vous disposez d'une hiérarchie à plusieurs niveaux. Seuls les comptes client peuvent être sélectionnés.
- Par défaut, les comptes fermés, annulés et suspendus ne sont pas renvoyés. Vous pouvez remplacer ce comportement en appelant
withConditionet en spécifiant un filtre différent pourcustomer_client.status.
Par défaut, l'appel accounts récupère la liste de tous les comptes client de la hiérarchie du compte administrateur. Vous pouvez utiliser la
withLimit
méthode de la
ManagedAccountSelector
classe pour limiter le nombre de comptes récupérés par votre script. Vous pouvez également sélectionner les comptes par leur ID client à l'aide de la
withIds
méthode :
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
Utiliser des comptes client
Une fois que vous avez récupéré les comptes client, vous pouvez les parcourir à l'aide de
l'itérateur
hasNext
et
next
méthodes. Vous devez utiliser la
select
méthode pour passer le contexte d'exécution à un compte client. Une fois que vous avez sélectionné un compte client, tous les appels d'API suivants s'appliquent à ce compte jusqu'à ce que vous en sélectionniez explicitement un autre :
// 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
...
}
Utiliser des comptes en parallèle
Les scripts Google Ads vous permettent d'utiliser plusieurs comptes client en parallèle à l'aide de la
executeInParallel
méthode de la
ManagedAccountSelector
classe. La méthode executeInParallel présente la signature suivante :
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
La méthode executeInParallel exécute une fonction spécifiée par functionName
sur chaque
ManagedAccount
correspondant à
ManagedAccountSelector. Une fois que tous les comptes ont été traités, la fonction de rappel, si
elle est spécifiée par optionalCallbackFunctionName, est exécutée une seule fois, en transmettant une liste
d'
ExecutionResult
objets comme argument pour tout traitement ultérieur. L'utilisation typique est illustrée ici :
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 à un compte, vous pouvez d'abord le convertir en chaîne à l'aide de la
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'un
objet via
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 d'objets
ExecutionResult. Si vous avez renvoyé une chaîne JSON à partir de la fonction, vous pouvez la reconvertir
en objet JavaScript à l'aide de
JSON.parse
méthode :
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
La méthode
executeInParallel
fonctionne sur un maximum de 50
accounts,
vous devrez donc implémenter vos propres restrictions pour limiter le nombre de
comptes récupérés par votre script. Vous pouvez utiliser la
withLimit
ou la
withIds
méthode de la classe
ManagedAccountSelector
pour limiter le nombre de comptes récupérés par votre script.
Limites de temps d'exécution
Pour en savoir plus sur les limites de temps d'exécution des scripts Ads Manager, consultez la documentation sur les limites.