การเข้าถึงหลายบัญชี

ถ้าคุณมีบัญชีหลายบัญชีหรือจัดการบัญชีให้ผู้อื่น ทุกอย่างจะเริ่มต้นด้วยวัตถุ 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)

    ระบุชื่อของฟังก์ชันที่สคริปต์เรียกสําหรับแต่ละบัญชีที่ตัวเลือกส่งกลับ คุณอาจระบุสตริงป้อนค่าเพิ่มเติมที่ Scripts ส่งไปยังฟังก์ชัน เมื่อต้องการส่งผ่านวัตถุที่ซับซ้อน ให้ใช้เมธอด 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 เพื่อรับข้อมูลเอนทิตีของบัญชีได้ เมื่อต้องการเลือกบัญชี ให้ใช้วิธีการ เลือกของ AccountsApp

แต่ก่อนอื่นคุณต้องเรียกใช้วิธีการ บัญชีเพื่อเลือก บัญชีที่คุณต้องการประมวลผล สําหรับข้อมูลเกี่ยวกับการใช้เพื่อ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.
    }
}