Geçici kaynak adları
BatchJobService, aynı toplu iş içindeki sonraki işlemlerde (sequence_token ile yüklenen birden fazla sıralı AddBatchJobOperations isteği dahil) referans verilebilen geçici kaynak adlarını destekler. Bu sayede, sunucu tarafı kimlikleri atanmadan önce tek bir toplu işlemde kampanya ve buna bağlı reklam grupları, reklamlar ve ölçütler oluşturabilirsiniz. Aşağıdaki genel kurallar ve örnekte, tek bir istek, tüm AddBatchJobOperations yüklemeleriyle birlikte BatchJob'ın tamamını ifade eder.
Bunu, yeni kaynağın resource_name özelliğini negatif bir kimlik kullanacak şekilde belirterek yapabilirsiniz. Örneğin, bir kampanya oluşturduğunuzu ve kaynak adını customers/<YOUR_CUSTOMER_ID>/campaigns/-1 olarak belirttiğinizi varsayalım. Daha sonraki bir işlemde reklam grubunu oluşturduğunuzda, bu reklam grubuna kaynak adıyla başvurabilirsiniz. Belirttiğiniz -1, oluşturulan kampanyanın gerçek kimliğiyle otomatik olarak değiştirilir.
Geçici kaynak adlarını kullanırken aklınızda bulundurmanız gereken bazı noktalar aşağıda belirtilmiştir:
- Geçici kaynak adı yalnızca bir kaynakta tanımlandıktan sonra kullanılabilir. Aşağıdaki örnekte, reklam grubu işlemi, işlemler listesinde kampanya işleminden sonra görünmelidir.
- Geçici kaynak adları, işler veya değiştirme istekleri arasında hatırlanmaz. Önceki bir işte veya değişiklik isteğinde oluşturulan bir kaynağa referans vermek için kaynağın gerçek kaynak adını kullanın.
- Tek bir iş veya değişiklik isteği için, farklı kaynak türlerinden olsalar bile her geçici kaynak adı benzersiz bir negatif sayı kullanmalıdır. Tek bir işte veya değişiklik isteğinde geçici ID yeniden kullanılırsa hata döndürülür.
Örnek
Tek bir API isteğinde kampanya, reklam grubu ve reklam eklemek istediğinizi varsayalım. İsteğiniz için aşağıdaki gibi bir yapı oluşturursunuz:
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"
...
}
}
},
]
Kampanya için kullandığımız -1 yeniden kullanılamadığından reklam grubu için yeni bir geçici ID kullanılıyor. Ayrıca, bir reklam grubu reklamı oluştururken de bu reklam grubuna referans veririz. Reklam grubunun kendisi, istekteki önceki bir işlemde kampanya için oluşturduğumuz kaynak adını referans alırken başka bir işlem bu adı referans almadığı için ad_group_ad_operation içindeki resource_name gerekli değildir.
Toplu işlerde hata işleme
Bir toplu işte standart işlemler kısmi hata etkinleştirilmiş olarak yürütüldüğünden (atomik alt toplu işler hariç) geçici kimliğe sahip bir üst kaynak doğrulanamazsa bu geçici kimliğe referans veren tüm bağımlı alt işlemler NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS ile başarısız olur.
Aynı toplu işteki birden fazla create işleminde aynı negatif kimliğin yeniden kullanılması NewResourceCreationError.DUPLICATE_TEMP_IDS değerini döndürür. Geçici kimlikler yalnızca kaynak oluşturulurken (create) veya yeni oluşturulan üst kaynaklara referans verilirken geçerlidir. Örneğin, AddBatchJobOperations çağrılırken AdGroupCriterionOperation.remove içinde negatif bir geçici ID iletildiğinde RequestError.RESOURCE_NAME_MALFORMED döndürülür.