กลายพันธุ์

สคริปต์ 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 ขึ้นอยู่กับประเภททรัพยากรที่คุณใช้งานอยู่

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

มีกลยุทธ์ 2-3 อย่างที่คุณสามารถใช้เพื่อสร้างการดำเนินการที่ถูกต้อง หลังจากทำตามตัวอย่างงบประมาณแคมเปญแล้ว คุณอาจค้นหาเอกสารอ้างอิง 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 โดย 1 รายการสำหรับการดำเนินการแต่ละรายการที่คุณระบุ และในลำดับเดียวกันกับการดำเนินการเริ่มต้น

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

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

  • apiVersion: คุณระบุเวอร์ชัน API ที่กำหนดเองได้ เช่น V16 หากต้องการใช้เวอร์ชันอื่นที่ไม่ใช่ค่าเริ่มต้นของสคริปต์ คุณจะใช้เวอร์ชันใดก็ได้ที่พร้อมใช้งานแบบสาธารณะ
  • 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});