Acesso a várias contas

Se tiver várias contas ou gerir contas para outras pessoas, tudo começa com o objeto AccountsApp . AccountsApp é o objeto de nível superior que utiliza para obter a lista de contas às quais tem acesso e para selecionar a conta a gerir. Depois de obter e selecionar a conta, mude para utilizar o objeto AdsApp para aceder às entidades da conta.

Nota

Para scripts de várias contas, utilize o Editor de scripts acedido a partir do Resumo de Contas na aplicação Web Microsoft Advertising. Se não vir Resumo de Contas na IU, não utilizará o editor de Scripts de várias contas.

Para aceder ao editor de Scripts a partir do Resumo de Contas, clique em Operações em Massa no painel esquerdo. Em seguida, em Scripts , clique em Criar e gerir scripts.

Listar as contas às quais tem acesso

Para listar todas as contas às quais tem acesso, chame o método de contas . O método devolve um objeto BingAdsAccountSelector que pode utilizar para filtrar a lista de contas. Para obter informações sobre como utilizar seletores para filtrar listas, consulte Utilizar seletores.

O exemplo seguinte devolve todas as contas às quais tem acesso.

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

Executar uma função para cada conta em paralelo

Para realizar trabalhos em várias contas em paralelo, chame o método do executeInParallel()seletor. Seguem-se os executeInParallel() métodos que pode chamar.

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Especifique o nome da função que os Scripts chamam para cada conta devolvida pelo seletor. A função pode devolver um valor como uma cadeia. Para devolver um objeto complexo, utilize o método JSON.stringify para converter o objeto numa cadeia. Em seguida, pode utilizar o método JSON.parse para converter novamente a cadeia num objeto.

    Se a função devolver um valor, tem de especificar uma função de chamada de retorno para capturar os valores devolvidos. Depois de a função ser executada para todas as contas selecionadas, os Scripts chamam a função de chamada de retorno opcional. Os valores devolvidos são transmitidos como uma matriz de objetos ExecutionResult .

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

    Especifique o nome da função que os Scripts chamam para cada conta devolvida pelo seletor. Pode especificar uma cadeia de entrada opcional que os Scripts transmitem para a função. Para transmitir um objeto complexo, utilize o método JSON.stringify para converter o objeto numa cadeia. Em seguida, pode utilizar o método JSON.parse dentro da função para converter novamente a cadeia num objeto.

    A função pode devolver um valor como uma cadeia. Para devolver um objeto complexo, utilize o método JSON.stringify para converter o objeto numa cadeia. Em seguida, pode utilizar o método JSON.parse para converter novamente a cadeia num objeto.

    Se a função devolver um valor, tem de especificar uma função de chamada de retorno para capturar os valores devolvidos. Depois de a função ser executada para todas as contas selecionadas, os Scripts chamam a função de chamada de retorno opcional. Os valores devolvidos são transmitidos como uma matriz de objetos ExecutionResult .

Tem de limitar o número de contas a 50, caso contrário, a chamada falhará se o seletor devolver mais de 50. Para limitar o número de contas, pode utilizar os withLimit()métodos , withIds()e withAccountNumbers() .

O exemplo seguinte mostra um exemplo simples que executa uma função para cada conta que tinha uma taxa de clique-através inferior a 5% na semana passada. O exemplo utiliza o withLimit() método para garantir que a chamada não excede o limite de 50 contas.

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

Alterar a conta que os Scripts processam

Até selecionar uma conta para processar, não pode chamar nenhum dos métodos adsApp para obter os dados da entidade da conta. Para selecionar uma conta, utilize o método select de AccountsApp.

No entanto, primeiro tem de chamar o método de contas para selecionar as contas que pretende processar. Para obter informações sobre como utilizar accounts() para filtrar a lista de contas, consulte Listar as contas às quais tem acesso.

Depois de obter uma conta, chame o select() método para tornar a conta na conta atual. O exemplo seguinte mostra este 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.
    }
}