AdsManagerApp
ในสคริปต์ Google Ads ทำให้คุณสามารถจัดการบัญชีที่เชื่อมโยง
บัญชีดูแลจัดการ คุณสามารถจัดการบัญชีผู้ลงโฆษณาทั้งหมดผ่านสคริปต์เดียวแทนที่จะสร้างสคริปต์แยกต่างหากสําหรับแต่ละบัญชี
ดึงข้อมูลรายการบัญชี
คุณสามารถเรียกข้อมูลบัญชีภายใต้บัญชีดูแลจัดการได้โดยใช้
accounts
ตัวอย่างเช่น
const accountSelector = AdsManagerApp.accounts()
.withCondition('customer_client.descriptive_name = "My Account"');
const accountIterator = accountSelector.get();
มีข้อจำกัดบางอย่างในบัญชีที่ดึงข้อมูลได้ ดังนี้
- คุณจะดึงบัญชีดูแลจัดการไม่ได้หากมีหลายระดับ ลำดับชั้น เลือกได้เฉพาะบัญชีลูกค้า
- โดยค่าเริ่มต้น ระบบจะไม่แสดงบัญชีที่ปิด ยกเลิก และถูกระงับ คุณ
ลบล้างลักษณะการทำงานนี้ได้โดยเรียก
withCondition
โดยระบุ ตัวกรองสำหรับcustomer_client.status
การเรียกใช้ accounts
จะดึงข้อมูลรายการบัญชีลูกค้าทั้งหมดที่อยู่ภายใต้ลําดับชั้นบัญชีดูแลจัดการโดยค่าเริ่มต้น คุณสามารถใช้
withLimit
ของวิธีการ
ManagedAccountSelector
เพื่อจำกัดจำนวนบัญชีที่สคริปต์ของคุณดึงมา อีกตัวเลือกหนึ่งคือเลือกบัญชีตามรหัสลูกค้าโดยใช้วิธี withIds
ดังนี้
// Hyphens in the account ID are optional.
const accountSelector = AdsManagerApp.accounts()
.withIds(['123-456-7890', '234-567-8901', '345-678-9012']);
ทำงานในบัญชีลูกค้า
เมื่อดึงข้อมูลบัญชีลูกค้าแล้ว คุณจะวนดูบัญชีเหล่านั้นได้โดยใช้เมธอด hasNext
และ next
ของตัวดำเนินการวนซ้ำ คุณต้องใช้
select
เพื่อเปลี่ยนบริบทการดำเนินการเป็นบัญชีลูกค้า หลังจากเลือกบัญชีลูกค้าแล้ว การเรียก API เพิ่มเติมจะมีผลกับบัญชีลูกค้าจนกว่าคุณจะเลือกบัญชีอื่นอย่างชัดเจน
// Keep track of the manager account for future reference.
const managerAccount = AdsApp.currentAccount();
// Select your accounts
const accountIterator = AdsManagerApp.accounts()
// ... Write some logic here to select the accounts you want using
// withCondition or withIds
// Iterate through the list of accounts
for (const account of accountIterator) {
// Select the client account.
AdsManagerApp.select(account);
// Select campaigns under the client account
const campaignIterator = AdsApp.campaigns().get();
// Operate on client account
...
}
ทำงานในบัญชีไปพร้อมๆ กัน
สคริปต์ Google Ads ให้คุณดำเนินการกับบัญชีลูกค้าหลายบัญชีได้ในเวลาเดียวกัน โดยใช้
executeInParallel
ของวิธีการ
ManagedAccountSelector
เมธอด executeInParallel
มีลายเซ็นต่อไปนี้
function executeInParallel(functionName, optionalCallbackFunctionName, optionalInput);
เมธอด executeInParallel
จะเรียกใช้ฟังก์ชันที่ระบุโดย functionName
ในแต่ละ
ManagedAccount
ว่า
ManagedAccountSelector
ที่ตรงกัน เมื่อประมวลผลบัญชีทั้งหมดแล้ว ระบบจะเรียกใช้ฟังก์ชันการเรียกกลับ (หากระบุโดย optionalCallbackFunctionName
) 1 ครั้ง โดยส่งรายการออบเจ็กต์ ExecutionResult
เป็นการโต้แย้งสําหรับการประมวลผลเพิ่มเติม การใช้งานทั่วไปแสดงอยู่ด้านล่าง
function main() {
const accountSelector = AdsManagerApp.accounts()
.withLimit(50)
.withCondition('customer_client.currency_code = "USD"');
accountSelector.executeInParallel("processClientAccount", "afterProcessAllClientAccounts");
}
function processClientAccount() {
const clientAccount = AdsApp.currentAccount();
// Process your client account here.
...
// optionally, return a result, as text.
return "";
}
function afterProcessAllClientAccounts(results) {
for (const result of results) {
// Process the result further
...
}
}
ฟังก์ชันที่ระบุโดย functionName
สามารถยอมรับอาร์กิวเมนต์สตริง (optionalInput
) หรือไม่ก็ได้ พารามิเตอร์นี้สามารถใช้เพื่อส่งพารามิเตอร์เพิ่มเติมไปยังเมธอดแบบขนานทั้งหมดที่ executeInParallel
เรียกใช้
function main() {
const accountSelector = AdsManagerApp.accounts().withIds([1234567890, 3456787890]);
const sharedParameter = "INSERT_SHARED_PARAMETER_HERE";
accountSelector.executeInParallel("processClientAccount", null, sharedParameter);
}
function processClientAccount(sharedParameter) {
// Process your client account here.
...
}
หากคุณต้องการส่งออบเจ็กต์การกำหนดค่า JavaScript ที่มี
การตั้งค่าเฉพาะบัญชี อันดับแรก คุณสามารถแปลงเป็นสตริงโดยใช้
JSON.stringify
วิธีการ:
function main() {
...
const accountFlags = {
'1234567890': {
'label': 'Brand 1 campaigns',
},
'3456787890': {
'label': 'Brand 2 campaigns',
}
};
accountSelector.executeInParallel("processClientAccount", null,
JSON.stringify(accountFlags));
...
}
function processClientAccount(sharedParameter) {
const accountFlags = JSON.parse(sharedParameter);
// Process your client account here.
...
}
ฟังก์ชันที่ระบุโดย functionName
ยังแสดงผลสตริงแทนออบเจ็กต์ผ่าน JSON.stringify
ได้ด้วย
function processClientAccount() {
...
const jsonObj = {value: 10, list: [1,2,3,4,5,6], name: "Joe Smith"};
return JSON.stringify(jsonObj);
}
ระบบจะส่งค่าที่แสดงผลไปยังฟังก์ชัน Callback ในรายการออบเจ็กต์ ExecutionResult
หากแสดงผลสตริง JSON จากฟังก์ชัน คุณจะแปลงสตริงนั้นได้
กลับเข้าไปในออบเจ็กต์ JavaScript โดยใช้
JSON.parse
วิธีการ:
function callbackFunctionName(results) {
for (var i = 0; i < results.length; i++) {
var resultObj = JSON.parse(results[i].getReturnValue());
}
}
executeInParallel
ดำเนินการได้สูงสุด 50
accounts
คุณจึงต้องใช้ข้อจำกัดของคุณเองเพื่อจำกัดจำนวน
บัญชีที่สคริปต์ของคุณดึงมา คุณสามารถใช้วิธีของคลาส withLimit
หรือ withIds
เพื่อจํากัดจํานวนบัญชีที่สคริปต์ดึงข้อมูล
ขีดจำกัดเวลาดำเนินการ
ดูหน้านี้สำหรับ รายละเอียดเกี่ยวกับการจำกัดเวลาในการดำเนินการกับสคริปต์ Ads Manager