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