ชื่อทรัพยากรชั่วคราว
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