การเข้าถึงแบบหลายบัญชี
ถ้าคุณมีหลายบัญชีหรือจัดการบัญชีผู้ใช้สําหรับผู้อื่น ทุกอย่างจะเริ่มต้นด้วยวัตถุ AccountsApp AccountsApp เป็นวัตถุระดับบนสุดที่คุณใช้เพื่อรับรายการของบัญชีที่คุณสามารถเข้าถึง และเลือกบัญชีที่จะจัดการได้ หลังจากรับและเลือกบัญชีแล้ว คุณจะเปลี่ยนไปใช้ออบเจ็กต์ AdsApp เพื่อเข้าถึงเอนทิตีของบัญชีได้
หมายเหตุ
สําหรับสคริปต์แบบหลายบัญชี ให้ใช้ตัวแก้ไขสคริปต์ที่เข้าถึงจาก สรุปบัญชี ในเว็บแอปพลิเคชัน Microsoft Advertising ถ้าคุณไม่เห็น สรุปบัญชี ใน UI คุณจะไม่ได้ใช้ตัวแก้ไขสคริปต์แบบหลายบัญชี
หากต้องการเข้าถึงตัวแก้ไขสคริปต์จาก สรุปบัญชี ให้คลิก การดําเนินการแบบกลุ่ม ในบานหน้าต่างด้านซ้าย จากนั้น ภายใต้ สคริปต์ ให้คลิก สร้างและจัดการสคริปต์
แสดงรายการบัญชีผู้ใช้ที่คุณสามารถเข้าถึงได้
เมื่อต้องการแสดงรายการบัญชีทั้งหมดที่คุณสามารถเข้าถึง ให้เรียกใช้วิธีการ บัญชี เมธอด ส่งกลับวัตถุ BingAdsAccountSelector ที่คุณสามารถใช้เพื่อกรองรายการของบัญชีได้ สําหรับข้อมูลเกี่ยวกับการใช้ตัวเลือกในการกรองรายการ ให้ดู การใช้ตัวเลือก
ตัวอย่างต่อไปนี้จะแสดงบัญชีทั้งหมดที่คุณสามารถเข้าถึงได้
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`);
}
}
การดําเนินการฟังก์ชันสําหรับแต่ละบัญชีแบบขนาน
เมื่อต้องทํางานบนหลายบัญชีพร้อมกัน คุณเรียกใช้เมธอด ของexecuteInParallel()
ตัวเลือก ต่อไปนี้คือ executeInParallel()
วิธีการที่คุณสามารถเรียกใช้ได้
executeInParallel(string functionName, string optionalCallbackFunctionName)
ระบุชื่อของฟังก์ชันที่สคริปต์เรียกใช้สําหรับแต่ละบัญชีที่ตัวเลือกส่งกลับ ฟังก์ชันอาจส่งกลับค่าเป็นสตริง เมื่อต้องการส่งกลับวัตถุที่ซับซ้อน ให้ใช้เมธอด JSON.stringify เพื่อแปลงวัตถุเป็นสตริง จากนั้นคุณสามารถใช้เมธอด JSON.parse เพื่อแปลงสตริงกลับเป็นวัตถุได้
ถ้าฟังก์ชันของคุณส่งกลับค่า คุณต้องระบุฟังก์ชันเรียกกลับเพื่อจับค่าที่ส่งกลับ หลังจากฟังก์ชันถูกดําเนินการสําหรับบัญชีที่เลือกทั้งหมด สคริปต์จะเรียกใช้ฟังก์ชันเรียกกลับที่เลือกได้ ค่าที่ส่งกลับจะถูกส่งผ่านเป็นอาร์เรย์ของวัตถุ ExecutionResult
executeInParallel(string functionName, string optionalCallbackFunctionName, string optionalInput)
ระบุชื่อของฟังก์ชันที่สคริปต์เรียกใช้สําหรับแต่ละบัญชีที่ตัวเลือกส่งกลับ คุณอาจระบุสตริงป้อนเข้าที่เลือกได้ซึ่งสคริปต์จะส่งผ่านไปยังฟังก์ชัน เมื่อต้องการส่งผ่านวัตถุที่ซับซ้อน ให้ใช้เมธอด JSON.stringify เพื่อแปลงวัตถุเป็นสตริง จากนั้นคุณสามารถใช้เมธอด JSON.parse ภายในฟังก์ชันเพื่อแปลงสตริงกลับเป็นวัตถุได้
ฟังก์ชันอาจส่งกลับค่าเป็นสตริง เมื่อต้องการส่งกลับวัตถุที่ซับซ้อน ให้ใช้เมธอด JSON.stringify เพื่อแปลงวัตถุเป็นสตริง จากนั้นคุณสามารถใช้เมธอด JSON.parse เพื่อแปลงสตริงกลับเป็นวัตถุได้
ถ้าฟังก์ชันของคุณส่งกลับค่า คุณต้องระบุฟังก์ชันเรียกกลับเพื่อจับค่าที่ส่งกลับ หลังจากฟังก์ชันถูกดําเนินการสําหรับบัญชีที่เลือกทั้งหมด สคริปต์จะเรียกใช้ฟังก์ชันเรียกกลับที่เลือกได้ ค่าที่ส่งกลับจะถูกส่งผ่านเป็นอาร์เรย์ของวัตถุ ExecutionResult
คุณต้องจํากัดจํานวนของบัญชีเป็น 50 มิฉะนั้น การเรียกใช้จะล้มเหลวถ้าตัวเลือกส่งกลับมากกว่า 50 เมื่อต้องการจํากัดจํานวนของบัญชี คุณสามารถใช้withLimit()
withIds()
วิธีการ , และwithAccountNumbers()
ตัวอย่างต่อไปนี้แสดงตัวอย่างอย่างง่ายที่ดําเนินการฟังก์ชันสําหรับแต่ละบัญชีที่มีอัตราการคลิกผ่านน้อยกว่า 5% เมื่อสัปดาห์ที่แล้ว ตัวอย่างนี้ใช้ withLimit()
วิธีการ เพื่อให้แน่ใจว่าการเรียกใช้ไม่เกินขีดจํากัดบัญชี 50 บัญชี
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();
}
}
}
การเปลี่ยนบัญชีที่สคริปต์ประมวลผล
จนกว่าคุณจะเลือกบัญชีเพื่อประมวลผล คุณจะไม่สามารถเรียกใช้วิธีการใด ๆ ของ AdsApp เพื่อรับข้อมูลเอนทิตีของบัญชีได้ เมื่อต้องเลือกบัญชี ใช้วิธีการ เลือก ของบัญชี App
แต่ก่อนอื่นคุณต้องเรียกใช้วิธีการ บัญชี เพื่อเลือกบัญชีที่คุณต้องการประมวลผล สําหรับข้อมูลเกี่ยวกับการใช้ accounts()
เพื่อกรองรายการของบัญชีผู้ใช้ ให้ดู การแสดงรายการบัญชีผู้ใช้ที่คุณสามารถเข้าถึงได้
หลังจากรับบัญชีแล้ว ให้ select()
เรียกใช้เมธอด เพื่อทําให้บัญชีเป็นบัญชีปัจจุบัน ตัวอย่างต่อไปนี้แสดงกระบวนการนี้
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.
}
}