Acceso a varias cuentas

Si tiene varias cuentas o administra cuentas para otros, todo comienza con el objeto AccountsApp . AccountsApp es el objeto de nivel superior que puede usar para obtener la lista de cuentas a las que tiene acceso y seleccionar la cuenta que se va a administrar. Después de obtener y seleccionar la cuenta, cambia al uso del objeto AdsApp para acceder a las entidades de la cuenta.

Nota:

Para scripts de varias cuentas, usa el editor de scripts al que se accede desde el Resumen de cuentas en la aplicación web Microsoft Advertising. Si no ves Resumen de cuentas en la interfaz de usuario, no usarás el editor de scripts de varias cuentas.

Para acceder al editor de scripts desde Resumen de cuentas, haga clic en Operaciones masivas en el panel izquierdo. Luego, en Scripts , haga clic en Crear y administrar scripts.

Enumeración de las cuentas a las que tiene acceso

Para mostrar todas las cuentas a las que tiene acceso, siga el método de las cuentas . El método devuelve un objeto BingAdsAccountSelector que puede usar para filtrar la lista de cuentas. Para obtener información sobre cómo usar selectores para filtrar listas, consulte Uso de selectores.

En el ejemplo siguiente se muestran todas las cuentas a las que tiene acceso.

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

Ejecutar una función para cada cuenta en paralelo

Para realizar el trabajo en varias cuentas en paralelo, se llama al método delexecuteInParallel() selector. Los siguientes son los métodos a los executeInParallel() que puede llamar.

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Especifique el nombre de la función a la que llama Scripts para cada cuenta que devuelve el selector. La función puede devolver un valor como una cadena. Para devolver un objeto complejo, use el método JSON.stringify para convertir el objeto en una cadena. A continuación, puede usar el método JSON.parse para volver a convertir la cadena en un objeto.

    Si la función devuelve un valor, debe especificar una función de devolución de llamada para capturar los valores devueltos. Una vez ejecutada la función para todas las cuentas seleccionadas, Scripts llama a la función de devolución de llamada opcional. Los valores devueltos se pasan como una matriz de objetos ExecutionResult .

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

    Especifique el nombre de la función a la que llama Scripts para cada cuenta que devuelve el selector. Puede especificar una cadena de entrada opcional que Scripts pasa a la función. Para pasar un objeto complejo, use el método JSON.stringify para convertir el objeto en una cadena. A continuación, puede usar el método JSON.parse dentro de la función para volver a convertir la cadena en un objeto.

    La función puede devolver un valor como una cadena. Para devolver un objeto complejo, use el método JSON.stringify para convertir el objeto en una cadena. A continuación, puede usar el método JSON.parse para volver a convertir la cadena en un objeto.

    Si la función devuelve un valor, debe especificar una función de devolución de llamada para capturar los valores devueltos. Una vez ejecutada la función para todas las cuentas seleccionadas, Scripts llama a la función de devolución de llamada opcional. Los valores devueltos se pasan como una matriz de objetos ExecutionResult .

Debe limitar el número de cuentas a 50, de lo contrario, se produce un error en la llamada si el selector devuelve más de 50. Para limitar el número de cuentas, puede usar los withLimit()métodos , withIds(), , y withAccountNumbers() .

En el ejemplo siguiente se muestra un ejemplo sencillo que ejecuta una función para cada cuenta que tuvo una tasa de click-through inferior al 5 % la semana pasada. En el ejemplo se usa el withLimit() método para garantizar que la llamada no supere el límite de 50 cuentas.

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

Cambiar la cuenta que procesa Scripts

Hasta que seleccione una cuenta para procesar, no puede llamar a ninguno de los métodos de AdsApp para obtener los datos de la entidad de la cuenta. Para seleccionar una cuenta, use el método de selección de AccountsApp.

Pero primero debe llamar al método de cuentas para seleccionar las cuentas que desea procesar. Para obtener información sobre cómo filtrar accounts() la lista de cuentas, consulte Lista de las cuentas a las que tiene acceso.

Después de obtener una cuenta, llame select() al método para convertir la cuenta en la cuenta actual. En el ejemplo siguiente se muestra este proceso.

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