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

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

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 ดังที่แสดงในตัวอย่าง JSON ของ REST ต่อไปนี้ (โดยละเว้นช่องทรัพยากรอื่นๆ ที่จำเป็นเพื่อความกระชับ)

{
  "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