Skrip Ads Manager
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Dapatkan semua akun
function getAllAccounts() {
const accountIterator = AdsManagerApp.accounts().get();
for (const account of accountIterator) {
const accountName = account.getName() ? account.getName() : '--';
console.log('%s,%s,%s,%s', account.getCustomerId(), accountName,
account.getTimeZone(), account.getCurrencyCode());
}
}
Dapatkan akun dari ID pelanggan
function getAccountsFromCustomerIds() {
// This is useful when you are reading customer IDs from an external data
// source, such as a Google Spreadsheet.
// You can also use the condition "CustomerId in ['123-456-7890',
// '345-678-9000', '890-123-6000']".
const accountIterator = AdsManagerApp.accounts()
.withIds(['123-456-7890', '345-678-9000', '890-123-6000'])
.get();
for (const account of accountIterator) {
const accountName = account.getName() ? account.getName() : '--';
console.log('%s,%s,%s,%s', account.getCustomerId(), accountName,
account.getTimeZone(), account.getCurrencyCode());
}
}
Dapatkan akun berdasarkan label
function getAccountsByLabel() {
// Only CONTAINS and DOES_NOT_CONTAIN operators are supported.
const accountIterator = AdsManagerApp.accounts()
.withCondition("LabelNames CONTAINS 'High spend accounts'")
.get();
for (const account of accountIterator) {
const accountName = account.getName() ? account.getName() : '--';
console.log('%s,%s,%s,%s', account.getCustomerId(), accountName,
account.getTimeZone(), account.getCurrencyCode());
}
}
Perbarui beberapa akun secara berangkai
function updateAccountsInSeries() {
// You can use this approach when you have only minimal processing to
// perform in each of your client accounts.
// Select the accounts to be processed.
const accountIterator = AdsManagerApp.accounts()
.withCondition("LabelNames CONTAINS 'Cars'")
.get();
for (const account of accountIterator) {
// Switch to the account you want to process.
AdsManagerApp.select(account);
// Retrieve all campaigns to be paused.
const campaignIterator = AdsApp.campaigns()
.withCondition("LabelNames = 'Christmas promotion'")
.get();
for (const campaign of campaignIterator) {
console.log(`Pausing campaign ${campaign.getName()} in ` +
`account ${account.getCustomerId()}`);
campaign.pause();
}
}
}
Perbarui beberapa akun secara paralel
function updateAccountsInParallel() {
// You can use this approach when you have a large amount of processing
// to do in each of your client accounts.
// Select the accounts to be processed. You can process up to 50 accounts.
const accountSelector = AdsManagerApp.accounts()
.withCondition("LabelNames CONTAINS 'High spend accounts'")
.withLimit(50);
// Process the account in parallel. The 'processAccount' function will
// be called in the context of each account in the selector. The 'allFinished' function
// will be called in this script once processing is complete, and is optional.
accountSelector.executeInParallel('processAccount', 'allFinished');
}
/**
* Process one account at a time. This method is called by the executeInParallel
* method call in updateAccountsInParallel function for every account that
* it processes.
*
* @return {Number} the number of campaigns paused by this method.
*/
function processAccount() {
// executeInParallel will automatically switch context to the account being
// processed, so all calls to AdsApp will apply to the selected account.
const campaignIterator = AdsApp.campaigns()
.withCondition("LabelNames = 'Christmas promotion'")
.get();
for (const campaign of campaignIterator) {
console.log(`Pausing campaign ${campaign.getName()} in ` +
`account ${account.getCustomerId()}`);
campaign.pause();
}
// Optional: return a string value. If you have a more complex JavaScript
// object to return from this method, use JSON.stringify(value). This value
// will be passed on to the callback method, if specified, in the
// executeInParallel method call.
return campaignIterator.totalNumEntities().toFixed(0);
}
/**
* Post-process the results from processAccount. This method will be called
* once all the accounts have been processed by the executeInParallel method
* call.
*
* @param {Array.<ExecutionResult>} results An array of ExecutionResult objects,
* one for each account that was processed by the executeInParallel method.
*/
function allFinished(results) {
for (const result of results) {
console.log(`Customer ID: ${result.getCustomerId}; ` +
`status = ${result.getStatus}.`);
// Check the execution status. This can be one of ERROR, OK, or TIMEOUT.
if (result.getStatus() == 'ERROR') {
console.log(`-- Failed with error: '${result.getError()}'.`);
} else if (result.getStatus() == 'OK') {
// This is the value you returned from processAccount method. If you
// used JSON.stringify(value) in processAccount, you can use
// JSON.parse(text) to reconstruct the JavaScript object.
const retval = result.getReturnValue();
console.log(`--Processed ${retval} campaigns.`);
} else {
// Handle timeouts here.
}
}
}
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-10-11 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2024-10-11 UTC."],[[["This script showcases how to retrieve Google Ads accounts using various methods, including fetching all accounts, filtering by customer IDs, and selecting accounts based on label criteria."],["It demonstrates methods for updating multiple accounts, either by processing them individually in series or handling them concurrently in parallel for improved efficiency."],["Parallel processing is highlighted as a suitable approach for scenarios involving substantial workloads within each account, enabling quicker execution by handling up to 50 accounts simultaneously."],["Account processing in parallel utilizes `executeInParallel`, allowing separate functions for individual account operations and a final callback for consolidating results and managing errors or timeouts."]]],[]]