Accès à plusieurs comptes

Si vous avez plusieurs comptes ou que vous gérez des comptes pour d’autres personnes, tout commence par l’objet AccountsApp . AccountsApp est l’objet de niveau supérieur que vous utilisez pour obtenir la liste des comptes auxquels vous avez accès et pour sélectionner le compte à gérer. Après avoir obtenu et sélectionné le compte, vous passez à l’utilisation de l’objet AdsApp pour accéder aux entités du compte.

Remarque

Pour les scripts multicomptes, utilisez l’éditeur de scripts accessible à partir du résumé des comptes dans l’application web Microsoft Advertising. Si vous ne voyez pas Le résumé des comptes dans l’interface utilisateur, vous n’utiliserez pas l’éditeur de scripts multicomptes.

Pour accéder à l’éditeur de scripts à partir du récapitulatif des comptes, cliquez sur Opérations en bloc dans le volet gauche. Ensuite, sous Scripts , cliquez sur Créer et gérer des scripts.

Liste des comptes auxquels vous avez accès

Pour répertorier tous les comptes auxquels vous avez accès, appelez la méthode accounts . La méthode renvoie un objet BingAdsAccountSelector que vous pouvez utiliser pour filtrer la liste des comptes. Pour plus d’informations sur l’utilisation de sélecteurs pour filtrer les listes, consultez Utilisation de sélecteurs.

L’exemple suivant retourne tous les comptes auxquels vous avez accès.

function main() {
    var accounts = AccountsApp.accounts()
        .get();

    while (accounts.hasNext()) {
        var account = accounts.next();

        Logger.log(`Account ID: ${account.getAccountId()}
            Account name: ${account.getName()}
            Account number: ${account.getAccountNumber()}
            Customer ID: ${account.getCustomerId()}
            Currency code: ${account.getCurrencyCode()}
            Time zone: ${account.getTimeZone()}\n\n`);
    }
}

Exécution d’une fonction pour chaque compte en parallèle

Pour effectuer un travail sur plusieurs comptes en parallèle, vous appelez la méthode duexecuteInParallel() sélecteur. Voici les méthodes que executeInParallel() vous pouvez appeler.

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Spécifiez le nom de la fonction que Scripts appelle pour chaque compte retourné par le sélecteur. La fonction peut retourner une valeur sous forme de chaîne. Pour renvoyer un objet complexe, utilisez la méthode JSON.stringify pour convertir l’objet en chaîne. Vous pouvez ensuite utiliser la méthode JSON.parse pour reconverti la chaîne en objet .

    Si votre fonction retourne une valeur, vous devez spécifier une fonction de rappel pour capturer les valeurs de retour. Une fois la fonction exécutée pour tous les comptes sélectionnés, Scripts appelle la fonction de rappel facultative. Les valeurs de retour sont passées sous la forme d’un tableau d’objets ExecutionResult .

  • executeInParallel(string functionName, string optionalCallbackFunctionName, string optionalInput)

    Spécifiez le nom de la fonction que Scripts appelle pour chaque compte retourné par le sélecteur. Vous pouvez spécifier une chaîne d’entrée facultative que Scripts passe à la fonction. Pour passer un objet complexe, utilisez la méthode JSON.stringify pour convertir l’objet en chaîne. Vous pouvez ensuite utiliser la méthode JSON.parse à l’intérieur de la fonction pour reconverti la chaîne en objet .

    La fonction peut retourner une valeur sous forme de chaîne. Pour renvoyer un objet complexe, utilisez la méthode JSON.stringify pour convertir l’objet en chaîne. Vous pouvez ensuite utiliser la méthode JSON.parse pour reconverti la chaîne en objet .

    Si votre fonction retourne une valeur, vous devez spécifier une fonction de rappel pour capturer les valeurs de retour. Une fois la fonction exécutée pour tous les comptes sélectionnés, Scripts appelle la fonction de rappel facultative. Les valeurs de retour sont passées sous la forme d’un tableau d’objets ExecutionResult .

Vous devez limiter le nombre de comptes à 50. Sinon, l’appel échoue si le sélecteur retourne plus de 50. Pour limiter le nombre de comptes, vous pouvez utiliser les withLimit()méthodes , withIds()et withAccountNumbers() .

L’exemple suivant montre un exemple simple qui exécute une fonction pour chaque compte dont le taux de clics était inférieur à 5 % la semaine dernière. L’exemple utilise la withLimit() méthode pour s’assurer que l’appel ne dépasse pas la limite de 50 comptes.

function main() {
    // Select the accounts to process.
    var accounts = AccountsApp.accounts()
        .withLimit(50) 
        .withCondition('Ctr < 0.05')
        .forDateRange('LAST_WEEK')
        .executeInParallel('bump', 'resultsHandler');
}

function bump() {
    var account = AdsApp.currentAccount();

    // Do something with the entities in the account.

    Logger.log(`Processing account: ${account.getAccountId()} (${account.getName()})`);

    // Return a value that's processed by resultsHandler(). If 
    // the function returns a value, it must be a string. To return
    // a complex object, use JSON.stringify(object) to return the 
    // object as a string.

    return account.getAccountId();
}

// Handles all return values from the bump() function after the 
// function completes for all accounts.

function resultsHandler(results) {
    
    for (var result of results) {
        if (result.getStatus() === 'OK') {
            value = result.getReturnValue();
        }
    }
}

Modification du compte traité par Scripts

Tant que vous n’avez pas sélectionné un compte à traiter, vous ne pouvez pas appeler les méthodes AdsApp pour obtenir les données d’entité du compte. Pour sélectionner un compte, utilisez la méthode select de AccountsApp.

Mais vous devez d’abord appeler la méthode accounts pour sélectionner les comptes que vous souhaitez traiter. Pour plus d’informations sur l’utilisation accounts() de pour filtrer la liste des comptes, consultez Liste des comptes auxquels vous avez accès.

Après avoir obtenu un compte, appelez la select() méthode pour définir le compte actuel. L’exemple suivant illustre ce processus.

function main() {
    // This call logs null. Before using any
    // of the AdsApp methods, you must first
    // select an account to process.

    Logger.log(AdsApp.currentAccount());

    // Select the accounts to process

    var accounts = AccountsApp.accounts()
        .withIds(['123', '456', '789'])
        .get();

    while (accounts.hasNext()) {
        AccountsApp.select(accounts.next());

        // AdsApp is now set to the current account.
        // Do something with the account's entities.
    }
}