Nama resource sementara
BatchJobService mendukung nama resource sementara yang
dapat dirujuk dalam operasi berikutnya dalam tugas batch yang sama—termasuk
di beberapa permintaan AddBatchJobOperations berurutan yang diupload dengan sequence_token. Cara ini memungkinkan Anda membuat kampanye dan grup iklan, iklan, serta kriteria yang bergantung padanya dalam satu tugas batch sebelum ID sisi server ditetapkan. Dalam aturan umum dan contoh berikut, satu permintaan merujuk ke seluruh BatchJob di semua upload AddBatchJobOperations-nya.
Anda dapat melakukannya dengan menentukan resource_name resource baru untuk menggunakan ID negatif. Misalnya, Anda membuat kampanye dan menentukan nama resource-nya
sebagai customers/<YOUR_CUSTOMER_ID>/campaigns/-1. Saat membuat
grup iklan dalam operasi selanjutnya, Anda dapat merujuknya berdasarkan nama resource tersebut
dan -1 yang Anda tentukan akan digantikan oleh ID sebenarnya dari kampanye yang dibuat
secara otomatis.
Berikut beberapa hal yang perlu diingat saat menggunakan nama resource sementara:
- Nama resource sementara hanya dapat digunakan setelah ditentukan dalam resource. Dalam contoh berikut, operasi grup iklan harus muncul setelah operasi kampanye dalam daftar operasi.
- Nama resource sementara tidak diingat di seluruh tugas atau permintaan mutasi. Untuk mereferensikan resource yang dibuat dalam tugas atau permintaan modifikasi sebelumnya, gunakan nama resource sebenarnya.
- Untuk satu tugas atau permintaan modifikasi, setiap nama resource sementara harus menggunakan angka negatif unik, meskipun berasal dari jenis resource yang berbeda. Jika ID sementara digunakan kembali dalam satu tugas atau permintaan modifikasi, maka error akan ditampilkan.
Contoh
Misalnya, Anda ingin menambahkan kampanye, grup iklan, dan iklan dalam satu permintaan API. Anda akan membuat struktur untuk permintaan yang serupa dengan berikut:
mutate_operations: [
{
campaign_operation: {
create: {
resource_name: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1",
...
}
}
},
{
ad_group_operation: {
create: {
resource_name: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2",
campaign: "customers/<YOUR_CUSTOMER_ID>/campaigns/-1"
...
}
}
},
{
ad_group_ad_operation: {
create: {
ad_group: "customers/<YOUR_CUSTOMER_ID>/adGroups/-2"
...
}
}
},
]
ID sementara baru digunakan untuk grup iklan, karena kita tidak dapat menggunakan kembali -1 yang kita gunakan untuk kampanye. Kita juga mereferensikan grup iklan ini saat membuat iklan grup iklan. Grup iklan itu sendiri mereferensikan nama resource yang kami tetapkan untuk kampanye dalam operasi sebelumnya dalam permintaan, sementara resource_name di ad_group_ad_operation tidak diperlukan karena tidak ada operasi lebih lanjut yang mereferensikannya.
Penanganan error dalam tugas batch
Karena operasi standar dalam tugas batch dijalankan dengan
kegagalan sebagian diaktifkan (kecuali dalam
sub-batch atomik), jika validasi resource induk dengan ID
sementara gagal, semua operasi turunan yang bergantung pada ID
sementara tersebut akan gagal dengan
NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS.
Menggunakan kembali ID negatif yang sama di beberapa operasi create dalam
tugas batch yang sama akan menampilkan
NewResourceCreationError.DUPLICATE_TEMP_IDS. ID sementara hanya valid saat membuat resource (create) atau mereferensikan resource induk yang baru dibuat; misalnya, meneruskan ID sementara negatif di AdGroupCriterionOperation.remove saat memanggil AddBatchJobOperations akan menampilkan RequestError.RESOURCE_NAME_MALFORMED.