Acesso multicontas

Se você tiver várias contas ou gerenciar contas de outras pessoas, tudo começará com o objeto AccountsApp . AccountsApp é o objeto de nível superior que você usa para obter a lista de contas às quais tem acesso e para selecionar a conta para gerenciar. Depois de obter e selecionar a conta, você passa a usar o objeto AdsApp para acessar as entidades da conta.

Nota

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

Para acessar o editor de scripts no Resumo de contas, clique em Operações em massa no painel esquerdo. Em seguida, em Scripts , clique em Criar e gerenciar scripts.

Listar as contas às quais tem acesso

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

O exemplo seguinte devolve todas as contas a que 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 executar trabalho em várias contas em paralelo, você chama o método doexecuteInParallel() seletor. Seguem-se os métodos que executeInParallel() pode chamar.

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Especifique o nome da função que o Scripts chama para cada conta que o seletor retorna. A função pode devolver um valor como uma cadeia. Para retornar um objeto complexo, use o método JSON.stringify para converter o objeto em uma cadeia de caracteres. Em seguida, você pode usar o método JSON.parse para converter a cadeia de caracteres novamente em um objeto.

    Se sua função retornar um valor, você deve especificar uma função de retorno de chamada para capturar os valores de retorno. Depois que a função é executada para todas as contas selecionadas, o Scripts chama a função de retorno de chamada opcional. Os valores de retorno são passados como uma matriz de objetos ExecutionResult .

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

    Especifique o nome da função que o Scripts chama para cada conta que o seletor retorna. Você pode especificar uma cadeia de caracteres de entrada opcional que os scripts passam para a função. Para passar um objeto complexo, use o método JSON.stringify para converter o objeto em uma cadeia de caracteres. Em seguida, você pode usar o método JSON.parse dentro da função para converter a cadeia de caracteres novamente em um objeto.

    A função pode devolver um valor como uma cadeia. Para retornar um objeto complexo, use o método JSON.stringify para converter o objeto em uma cadeia de caracteres. Em seguida, você pode usar o método JSON.parse para converter a cadeia de caracteres novamente em um objeto.

    Se sua função retornar um valor, você deve especificar uma função de retorno de chamada para capturar os valores de retorno. Depois que a função é executada para todas as contas selecionadas, o Scripts chama a função de retorno de chamada opcional. Os valores de retorno são passados como uma matriz de objetos ExecutionResult .

Tem de limitar o número de contas a 50, caso contrário, a chamada falha 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 teve uma taxa de cliques 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 o Scripts processa

Até selecionar uma conta para processar, você não pode chamar nenhum dos métodos do AdsApp para obter os dados de entidade da conta. Para selecionar uma conta, use o método de seleção de AccountsApp.

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

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