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

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

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