Condividi tramite


Accesso a più account

Se si hanno più account o si gestiscono account per altri utenti, tutto inizia con l'oggetto AccountsApp . AccountsApp è l'oggetto di primo livello usato per ottenere l'elenco degli account a cui si ha accesso e per selezionare l'account da gestire. Dopo aver ottenuto e selezionato l'account, si passa all'uso dell'oggetto AdsApp per accedere alle entità dell'account.

Nota

Per gli script con più account, usare l'editor script a cui si accede da Riepilogo account nell'applicazione Web Microsoft Advertising. Se il riepilogo degli account non viene visualizzato nell'interfaccia utente, non si userà l'editor script per più account.

Per accedere all'editor script da Riepilogo account, fare clic su Operazioni bulk nel riquadro sinistro. Quindi, in Script fare clic su Crea e gestisci script.

Elencare gli account a cui si ha accesso

Per elencare tutti gli account a cui si ha accesso, chiamare il metodo accounts . Il metodo restituisce un oggetto BingAdsAccountSelector che è possibile utilizzare per filtrare l'elenco di account. Per informazioni sull'uso dei selettori per filtrare gli elenchi, vedere Uso dei selettori.

Nell'esempio seguente vengono restituiti tutti gli account a cui si ha accesso.

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`);
    }
}

Esecuzione di una funzione per ogni account in parallelo

Per eseguire operazioni su più account in parallelo, chiamare il metodo del executeInParallel()selettore. Di seguito sono riportati i executeInParallel() metodi che è possibile chiamare.

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Specificare il nome della funzione chiamata da Script per ogni account restituito dal selettore. La funzione può restituire un valore come stringa. Per restituire un oggetto complesso, usare il metodo JSON.stringify per convertire l'oggetto in una stringa. È quindi possibile usare il metodo JSON.parse per convertire nuovamente la stringa in un oggetto .

    Se la funzione restituisce un valore, è necessario specificare una funzione di callback per acquisire i valori restituiti. Dopo l'esecuzione della funzione per tutti gli account selezionati, Script chiama la funzione di callback facoltativa. I valori restituiti vengono passati come matrice di oggetti ExecutionResult .

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

    Specificare il nome della funzione chiamata da Script per ogni account restituito dal selettore. È possibile specificare una stringa di input facoltativa passata da Script alla funzione. Per passare un oggetto complesso, usare il metodo JSON.stringify per convertire l'oggetto in una stringa. È quindi possibile usare il metodo JSON.parse all'interno della funzione per convertire nuovamente la stringa in un oggetto .

    La funzione può restituire un valore come stringa. Per restituire un oggetto complesso, usare il metodo JSON.stringify per convertire l'oggetto in una stringa. È quindi possibile usare il metodo JSON.parse per convertire nuovamente la stringa in un oggetto .

    Se la funzione restituisce un valore, è necessario specificare una funzione di callback per acquisire i valori restituiti. Dopo l'esecuzione della funzione per tutti gli account selezionati, Script chiama la funzione di callback facoltativa. I valori restituiti vengono passati come matrice di oggetti ExecutionResult .

È necessario limitare il numero di account a 50, in caso contrario, la chiamata ha esito negativo se il selettore restituisce più di 50. Per limitare il numero di account, è possibile usare i withLimit()metodi , withIds()e withAccountNumbers() .

Nell'esempio seguente viene illustrato un semplice esempio che esegue una funzione per ogni account con una frequenza di clic inferiore al 5% della settimana scorsa. Nell'esempio viene utilizzato il withLimit() metodo per assicurarsi che la chiamata non superi il limite di 50 account.

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();
        }
    }
}

Modifica dell'account elaborato da Script

Finché non si seleziona un account da elaborare, non è possibile chiamare uno dei metodi di AdsApp per ottenere i dati dell'entità dell'account. Per selezionare un account, usare il metodo select di AccountsApp.

Ma prima è necessario chiamare il metodo accounts per selezionare gli account che si desidera elaborare. Per informazioni sull'uso accounts() di per filtrare l'elenco di account, vedere Elencare gli account a cui si ha accesso.

Dopo aver ottenuto un account, chiamare il select() metodo per impostare l'account come account corrente. L'esempio seguente illustra questo processo.

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.
    }
}