กลายพันธุ์

สคริปต์ Google Ads รองรับการเปลี่ยนแปลงทั่วไปที่มีอยู่ใน Google Ads API การดำเนินการส่วนใหญ่ที่ทำได้จาก GoogleAdsService.mutate ก็ทำได้ในสคริปต์ Google Ads เช่นกัน รวมถึงการสร้างและจัดการแคมเปญ

เนื่องจากฟีเจอร์นี้อนุญาตให้เข้าถึง Google Ads API เป็นจำนวนมาก จึง จำเป็นต้องมีความเข้าใจพื้นฐานเกี่ยวกับข้อตกลงของ Google Ads API เพื่อใช้ ฟีเจอร์นี้ คุณข้ามหลายๆ ส่วนได้ เช่น โทเค็นนักพัฒนาแอปและ การให้สิทธิ์ เนื่องจากสคริปต์ Google Ads จะจัดการให้คุณ แต่คุณต้อง สร้างคำขอเปลี่ยนแปลงที่ถูกต้อง

แหล่งข้อมูลพื้นฐานเกี่ยวกับอินเทอร์เฟซ REST ของ Google Ads API ที่คุณควรทำความคุ้นเคยก่อนที่จะอ่านคำแนะนำนี้ต่อมีดังนี้

ตัวอย่างพื้นฐาน

หากต้องการแสดงฟังก์ชันการทำงาน ให้พิจารณาตัวอย่างพื้นฐานนี้ซึ่งสร้าง งบประมาณแคมเปญ

const budgetResult = AdsApp.mutate({
    campaignBudgetOperation: {
      create: {
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });

การเรียกใช้ AdsApp.mutate จะใช้ออบเจ็กต์ JSON ที่แสดง MutateOperationรายการเดียว ภายในออบเจ็กต์นี้ คุณ ระบุประเภทการดำเนินการที่คุณกำลังทำ ซึ่งในกรณีนี้คือ campaignBudgetOperation จากนั้นคุณจะระบุ create, remove หรือทั้ง update และ updateMask ก็ได้ ฟิลด์ที่เฉพาะเจาะจงภายใน create และ update จะขึ้นอยู่กับประเภททรัพยากรที่คุณกำลังดำเนินการ

สร้างการดำเนินการ

คุณสามารถใช้กลยุทธ์บางอย่างเพื่อสร้างการดำเนินการที่ถูกต้องได้ เมื่อใช้ตัวอย่างงบประมาณแคมเปญ คุณสามารถค้นหาเอกสารอ้างอิง REST สำหรับงบประมาณแคมเปญเพื่อดูรายการฟิลด์ที่ถูกต้องทั้งหมด จากนั้นกรอกฟิลด์ที่เหมาะสม หรือเขียนโค้ด JavaScript ที่กำหนดเองในสคริปต์เพื่อสร้างออบเจ็กต์ที่เหมาะสม

หรือคุณอาจลองสร้างการดำเนินการแบบไดนามิกโดยใช้ฟีเจอร์ "ลองใช้" สำหรับงบประมาณแคมเปญ ซึ่งช่วยให้คุณสร้างเนื้อหาคำขอแบบไดนามิกได้ด้วยการเลือกฟิลด์ที่ต้องการเพิ่ม จากนั้นคุณสามารถดึงเนื้อหาของการดำเนินการจากผลลัพธ์ที่สร้างขึ้น และเพิ่มลงในmutateการเรียกใช้หลังจากระบุประเภทการดำเนินการแล้ว

ประเภทการดำเนินการ

สร้าง

ระบุ create ในการดำเนินการของคุณ โดยส่งการแสดงออบเจ็กต์ของ ทรัพยากรที่คุณต้องการสร้าง

ดูตัวอย่างการดำเนินการ create ได้ที่ด้านบน

นำออก

ระบุ remove ในการดำเนินการ โดยส่งชื่อ ทรัพยากรของทรัพยากรที่ต้องการนำออก เช่น

AdsApp.mutate({
    adGroupOperation: {
        remove: "customers/[CUSTOMER_ID]/adGroups/[AD_GROUP_ID]"
    }
});

หากไม่ทราบชื่อทรัพยากรของเอนทิตี คุณสามารถดึงข้อมูลได้โดยใช้คำขอ Adsapp.search

อัปเดต

ระบุ update ในการดำเนินการ โดยส่งออบเจ็กต์ที่มีชื่อทรัพยากร ที่ระบุเพื่อให้ระบบระบุออบเจ็กต์ที่คุณต้องการ อัปเดตได้ นอกจากนี้ ให้กรอกข้อมูลในช่องที่ต้องการอัปเดตค่า และระบุ updateMask ซึ่งจะระบุช่องที่คุณวางแผนที่จะเปลี่ยนแปลงในคำขอนี้อย่างชัดเจน อย่าใส่ชื่อทรัพยากรในมาสก์การอัปเดต

ตัวอย่างการดำเนินการ update

const campaignResult = AdsApp.mutate({
    campaignOperation: {
        update: {
            resourceName: "customers/[CUSTOMER_ID]/campaigns/[CAMPAIGN_ID]",
            status: "PAUSED",
            name: "[Paused] My campaign"
        },
        updateMask: "name,status"
    }
});

การจัดการผลลัพธ์

ไม่ว่าจะเป็นการดำเนินการประเภทใด ค่าที่แสดงผลจะเป็น MutateResult คุณสามารถใช้ชื่อทรัพยากรที่ส่งคืนเพื่อค้นหาสถานะปัจจุบันของ ทรัพยากรหลังจากการเปลี่ยนแปลง และตรวจสอบว่าการดำเนินการสำเร็จหรือไม่ หรือมีข้อผิดพลาดใดเกิดขึ้น

ตัวอย่างต่อไปนี้แสดงโฟลว์พื้นฐานสำหรับการตรวจสอบผลลัพธ์และการพิมพ์ข้อมูลบางอย่างลงในบันทึก

const result = AdsApp.mutate( ... );
if (result.isSuccessful()) {
    console.log(`Resource ${result.getResourceName()} successfully mutated.`);
} else {
    console.log("Errors encountered:");
    for (const error of result.getErrorMessages()) {
        console.log(error);
    }
}

การดำเนินการหลายอย่าง

สคริปต์ Google Ads ยังรองรับการเปลี่ยนแปลงการดำเนินการหลายอย่างในคำขอเดียวด้วยเมธอด AdsApp.mutateAll คุณสร้างเอนทิตีที่ขึ้นต่อกันได้ เช่น ลำดับชั้นของแคมเปญแบบเต็ม ในคำขอเดียว คุณเลือกทำให้ชุดการดำเนินการทั้งหมดเป็นแบบอะตอมได้ (ไม่บังคับ) เพื่อให้หากการดำเนินการใดล้มเหลว ระบบจะไม่ดำเนินการใดๆ

ค่าที่แสดงผลคืออาร์เรย์ของออบเจ็กต์ MutateResult โดยมีออบเจ็กต์หนึ่งรายการสําหรับแต่ละการดําเนินการที่คุณระบุ และอยู่ในลําดับเดียวกับ การดําเนินการเริ่มต้น

ฟีเจอร์นี้ทํางานเหมือนกับฟีเจอร์ Google Ads API ดังนั้นโปรดอ่านคําอธิบายแบบเต็มเกี่ยวกับรหัสชั่วคราวและข้อควรพิจารณาอื่นๆ ในคู่มือแนวทางปฏิบัติแนะนําของ Google Ads API โปรดทราบว่าคู่มือนี้ใช้ snake_case เพื่อแสดงชื่อช่อง ในขณะที่เอกสารประกอบของ Google Ads Scripts ใช้ lowerCamelCase ทั้ง 2 กรณีนี้ใช้ได้ในสคริปต์ Google Ads คุณจึงคัดลอกโค้ดจากคำแนะนำนั้นได้โดยตรง

หากต้องการดำเนินการหลายอย่างในคำขอเดียว ให้รวบรวมการดำเนินการทั้งหมด ลงในอาร์เรย์ แล้วเรียกใช้ AdsApp.mutateAll การเรียก mutateAll จะใช้อาร์เรย์ของการดำเนินการเป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์ที่ 2 ที่ไม่บังคับของ ตัวเลือก ซึ่งรวมถึง

  • apiVersion: คุณระบุเวอร์ชัน API ที่กำหนดเองได้ เช่น V20 หากต้องการใช้เวอร์ชันอื่นนอกเหนือจาก ค่าเริ่มต้นของสคริปต์ คุณใช้เวอร์ชันใดก็ได้ที่เผยแพร่ต่อสาธารณะในขณะนั้น
  • partialFailure: ฟิลด์นี้มีค่าเริ่มต้นเป็น true หากตั้งค่าเป็น true ระบบจะ ดำเนินการที่ถูกต้องและแสดงข้อผิดพลาดสำหรับการดำเนินการที่ไม่สำเร็จ หากตั้งค่าเป็น false หากการดำเนินการใดล้มเหลว ระบบจะไม่ดำเนินการใดๆ ซึ่งจะ ทำให้ชุดการดำเนินการนี้เป็นแบบอะตอม

ตัวอย่างที่มีการดำเนินการหลายอย่างซึ่งสร้างงบประมาณแคมเปญ แคมเปญ และกลุ่มโฆษณาในคำขอแบบอะตอมมีดังนี้

const operations = [];
const customerId = 'INSERT_CUSTOMER_ID_HERE';
const budgetId = `customers/${customerId}/campaignBudgets/-1`;
const campaignId = `customers/${customerId}/campaigns/-2`;
operations.push({
    campaignBudgetOperation: {
      create: {
        resourceName: budgetId,
        amountMicros: 10000000,
        explicitlyShared: false
      }
    }
  });
operations.push({
    campaignOperation: {
      create: {
        resourceName: campaignId,
        name: 'New Campaign ' + new Date(),
        advertisingChannelType: 'SEARCH',
        manualCpc: {},
        campaignBudget: budgetId,
        advertisingChannelType: 'DISPLAY',
        networkSettings: {
          targetContentNetwork: true
        }
      }
    }
  });
operations.push({
    adGroupOperation: {
      create: {
        campaign: campaignId,
        name: 'New AdGroup ' + new Date(),
        optimizedTargetingEnabled: true
      }
    }
  });
const results = AdsApp.mutateAll(
    operations, {partialFailure: false});