ใช้รหัสชั่วคราว

ชื่อทรัพยากรชั่วคราว

BatchJobService รองรับชื่อทรัพยากรชั่วคราวที่สามารถอ้างอิงในการดำเนินการต่อๆ ไปภายในงานแบบกลุ่มเดียวกัน ซึ่งรวมถึงคำขอ AddBatchJobOperations ตามลำดับหลายรายการที่อัปโหลดด้วย sequence_token ซึ่งจะช่วยให้คุณสร้างแคมเปญและกลุ่มโฆษณา โฆษณา และเกณฑ์ที่เกี่ยวข้องในงานแบบกลุ่มเดียวได้ก่อนที่จะมีการกำหนดรหัสฝั่งเซิร์ฟเวอร์ ในกฎทั่วไปและตัวอย่างต่อไปนี้ คำขอเดียวหมายถึง BatchJob ทั้งรายการในการอัปโหลด AddBatchJobOperations ทั้งหมด

หากต้องการอ้างอิงทรัพยากรที่สร้างขึ้นใหม่ภายในคำขอเปลี่ยนแปลงข้อมูลในเซิร์ฟเวอร์หรือการประมวลผลแบบกลุ่มเดียวกัน ให้ระบุรหัสจำนวนเต็มลบ (เช่น -1 หรือ -2 ยกเว้น 0) ในช่อง resource_name ของทรัพยากรใหม่ ตัวอย่างเช่น เมื่อสร้างแคมเปญในคำขอแบบกลุ่ม ให้ตั้งชื่อทรัพยากรเป็น customers/CUSTOMER_ID/campaigns/-1 เมื่อสร้างกลุ่มโฆษณาในการดำเนินการถัดไปภายในคำขอเดียวกัน ให้อ้างอิง customers/CUSTOMER_ID/campaigns/-1 เป็นแคมเปญหลัก API จะแทนที่ -1 ด้วยรหัสแคมเปญจริงที่สร้างขึ้นเมื่อสร้างแคมเปญโดยอัตโนมัติ

ข้อจำกัดการใช้งาน

โปรดคำนึงถึงกฎต่อไปนี้เมื่อใช้ชื่อทรัพยากรชั่วคราว

  • ลำดับมีความสำคัญ: คุณจะอ้างอิงชื่อทรัพยากรชั่วคราวได้หลังจากที่กำหนดชื่อแล้วเท่านั้น ในรายการการดำเนินการ การดำเนินการที่ขึ้นต่อกัน (เช่น การสร้างกลุ่มโฆษณา) ต้องปรากฏหลังการดำเนินการที่สร้างทรัพยากรหลัก (เช่น การสร้างแคมเปญ)
  • ขอบเขตคำขอเดียวหรืองานแบบกลุ่ม: ชื่อทรัพยากรชั่วคราวจะไม่คงอยู่ในงานหรือคำขอเปลี่ยนแปลงข้อมูลในเซิร์ฟเวอร์ที่แยกกัน หากต้องการอ้างอิงทรัพยากรที่สร้างขึ้นในงานหรือคำขอเปลี่ยนแปลงข้อมูลในเซิร์ฟเวอร์ก่อนหน้า ให้ใช้ชื่อทรัพยากรจริงที่ระบบสร้างขึ้น
  • ความไม่ซ้ำกันทั่วโลก: ภายในงานหรือคำขอเปลี่ยนแปลงข้อมูลในเซิร์ฟเวอร์รายการเดียว ชื่อทรัพยากรชั่วคราวแต่ละชื่อต้องใช้จำนวนเต็มลบที่ไม่ซ้ำกันในทรัพยากรทุกประเภท เช่น คุณไม่สามารถกำหนด -1 ให้กับทั้งแคมเปญและกลุ่มโฆษณาในคำขอเดียวกัน การใช้รหัสชั่วคราวซ้ำภายในคำขอหรือการดำเนินการแบบกลุ่มเดียวกันจะแสดงข้อผิดพลาด NewResourceCreationError.DUPLICATE_TEMP_IDS

ตัวอย่างเพย์โหลด

สมมติว่าคุณต้องการเพิ่มแคมเปญ กลุ่มโฆษณา และโฆษณาในคำขอ API หรือ งานแบบกลุ่ม รายการเดียว คุณสามารถจัดโครงสร้างอาร์เรย์ mutateOperations ในเพย์โหลดคำขอ GoogleAdsService.Mutate หรือ BatchJobService.AddBatchJobOperations ดังที่แสดงในตัวอย่าง REST JSON ต่อไปนี้ (โดยละเว้นฟิลด์ทรัพยากรอื่นๆ ที่จำเป็นเพื่อความกระชับ)

{
  "mutateOperations": [
    {
      "campaignOperation": {
        "create": {
          "resourceName": "customers/CUSTOMER_ID/campaigns/-1"
        }
      }
    },
    {
      "adGroupOperation": {
        "create": {
          "resourceName": "customers/CUSTOMER_ID/adGroups/-2",
          "campaign": "customers/CUSTOMER_ID/campaigns/-1"
        }
      }
    },
    {
      "adGroupAdOperation": {
        "create": {
          "adGroup": "customers/CUSTOMER_ID/adGroups/-2"
        }
      }
    }
  ]
}

ตัวอย่างนี้แสดงรายละเอียดที่สำคัญต่อไปนี้

  • กลุ่มโฆษณาใช้รหัสชั่วคราวใหม่ (-2) เนื่องจากมีการกำหนด -1 ให้กับแคมเปญแล้ว
  • กลุ่มโฆษณาจะอ้างอิง customers/CUSTOMER_ID/campaigns/-1 เพื่อลิงก์ตัวเองกับแคมเปญที่สร้างขึ้นในการดำเนินการก่อนหน้า
  • adGroupAdOperation อ้างอิง customers/CUSTOMER_ID/adGroups/-2 และละเว้น resourceName เนื่องจากไม่มีการดำเนินการที่ตามมาในคำขอที่อ้างอิงโฆษณาใหม่

การจัดการข้อผิดพลาดในงานแบบกลุ่ม

เนื่องจากการดำเนินการมาตรฐานในงานแบบกลุ่มจะทำงานโดยเปิดใช้ความล้มเหลวบางส่วน (ยกเว้นภายในกลุ่มย่อยแบบอะตอม) หากทรัพยากรหลักที่มีรหัสชั่วคราวไม่ผ่านการตรวจสอบ การดำเนินการย่อยที่ขึ้นอยู่กับทรัพยากรหลักซึ่งอ้างอิงรหัสชั่วคราวนั้นจะล้มเหลวโดยมีข้อผิดพลาด NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS การใช้รหัสเชิงลบเดียวกันซ้ำในการดำเนินการ create หลายรายการภายในงานแบบกลุ่มเดียวกันจะแสดงผลเป็น NewResourceCreationError.DUPLICATE_TEMP_IDS รหัสชั่วคราวจะใช้ได้เมื่อสร้างทรัพยากร (create) หรืออ้างอิงทรัพยากรหลักที่สร้างขึ้นใหม่เท่านั้น เช่น การส่งรหัสชั่วคราวที่เป็นค่าลบใน AdGroupCriterionOperation.remove เมื่อเรียกใช้ AddBatchJobOperations จะแสดงผลเป็น RequestError.RESOURCE_NAME_MALFORMED