กลายพันธุ์

สคริปต์ 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});