Aracılığıyla paylaş


Çok hesaplı erişim

Birden çok hesabınız varsa veya başkaları için hesapları yönetiyorsanız, her şey AccountsApp nesnesiyle başlar. AccountsApp, erişiminiz olan hesapların listesini almak ve yönetecek hesabı seçmek için kullandığınız en üst düzey nesnedir. Hesabı aldıktan ve seçtikten sonra, hesabın varlıklarına erişmek için AdsApp nesnesini kullanmaya geçersiniz.

Not

Çok hesaplı betikler için, Microsoft Advertising web uygulamasında Hesaplar Özeti'nden erişilen Betikler düzenleyicisini kullanın. Kullanıcı arabiriminde Hesap Özeti'ni görmüyorsanız, çok hesaplı Betikler düzenleyicisini kullanmazsınız.

Hesap Özeti'nden Betikler düzenleyicisine erişmek için sol bölmedeki Toplu İşlemler'e tıklayın. Ardından , Betikler'in altında Betik oluştur ve yönet'e tıklayın.

Erişiminiz olan hesapları listeleme

Erişiminiz olan tüm hesapları listelemek için accounts yöntemini çağırın. yöntemi, hesap listesini filtrelemek için kullanabileceğiniz bir BingAdsAccountSelector nesnesi döndürür. Listeleri filtrelemek için seçicileri kullanma hakkında bilgi için bkz. Seçicileri kullanma.

Aşağıdaki örnek, erişiminiz olan tüm hesapları döndürür.

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

Her hesap için paralel bir işlev yürütme

Birden çok hesap üzerinde paralel çalışma gerçekleştirmek için seçicininexecuteInParallel() yöntemini çağırırsınız. Çağırabileceğiniz yöntemler aşağıdadır executeInParallel() .

  • executeInParallel(string functionName, string optionalCallbackFunctionName)

    Seçicinin döndürdüğü her hesap için Betikler'in çağırdığını işlevin adını belirtin. İşlev, dize olarak bir değer döndürebilir. Karmaşık bir nesne döndürmek için JSON.stringify yöntemini kullanarak nesneyi dizeye dönüştürün. Daha sonra dizeyi bir nesneye geri dönüştürmek için JSON.parse yöntemini kullanabilirsiniz.

    İşleviniz bir değer döndürürse, dönüş değerlerini yakalamak için bir geri çağırma işlevi belirtmeniz gerekir. İşlev tüm seçili hesaplar için yürütüldükten sonra Betikler isteğe bağlı geri çağırma işlevini çağırır. Dönüş değerleri ExecutionResult nesneleri dizisi olarak geçirilir.

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

    Seçicinin döndürdüğü her hesap için Betikler'in çağırdığını işlevin adını belirtin. Script'lerin işleve geçirebileceği isteğe bağlı bir giriş dizesi belirtebilirsiniz. Karmaşık bir nesneyi geçirmek için JSON.stringify yöntemini kullanarak nesneyi dizeye dönüştürün. Daha sonra dizeyi bir nesneye geri dönüştürmek için işlevinin içindeki JSON.parse yöntemini kullanabilirsiniz.

    İşlev, dize olarak bir değer döndürebilir. Karmaşık bir nesne döndürmek için JSON.stringify yöntemini kullanarak nesneyi dizeye dönüştürün. Daha sonra dizeyi bir nesneye geri dönüştürmek için JSON.parse yöntemini kullanabilirsiniz.

    İşleviniz bir değer döndürürse, dönüş değerlerini yakalamak için bir geri çağırma işlevi belirtmeniz gerekir. İşlev tüm seçili hesaplar için yürütüldükten sonra Betikler isteğe bağlı geri çağırma işlevini çağırır. Dönüş değerleri ExecutionResult nesneleri dizisi olarak geçirilir.

Hesap sayısını 50 ile sınırlamanız gerekir, aksi takdirde seçici 50'den fazla döndürürse çağrı başarısız olur. Hesap sayısını sınırlamak için , withIds()ve withAccountNumbers() yöntemlerini kullanabilirsinizwithLimit().

Aşağıdaki örnekte, geçen hafta %5'in altında tıklama oranına sahip her hesap için bir işlev yürüten basit bir örnek gösterilmektedir. Örnek, çağrının withLimit() 50 hesap sınırını aşmadığından emin olmak için yöntemini kullanır.

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

Betiklerin işlediği hesabı değiştirme

İşlenmek üzere bir hesap seçene kadar, hesabın varlık verilerini almak için AdsApp yöntemlerinden hiçbirini çağıramazsınız. Hesap seçmek için AccountsApp'in seçme yöntemini kullanın.

Ancak önce işlemek istediğiniz hesapları seçmek için accounts yöntemini çağırmanız gerekir. Hesap listesini filtrelemek için kullanma accounts() hakkında bilgi için bkz . Erişiminiz olan hesapları listeleme.

Bir hesap aldıktan sonra, hesabı geçerli hesap yapmak için yöntemini çağırın select() . Aşağıdaki örnekte bu işlem gösterilmektedir.

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