แชร์ผ่าน


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

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