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