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.
Aynı değişiklik isteği veya toplu iş içinde yeni oluşturulan bir kaynağa referans vermek için yeni kaynağın resource_name alanında negatif bir tam sayı kimliği (ör. -1 veya -2, 0 hariç) belirtin. Örneğin, toplu istekte kampanya oluştururken kaynak adını customers/CUSTOMER_ID/campaigns/-1 olarak ayarlayın.
Aynı istekteki sonraki bir işlemde reklam grubu oluştururken üst kampanya olarak customers/CUSTOMER_ID/campaigns/-1 öğesini referans alın. API, oluşturma sırasında oluşturulan gerçek kampanya kimliğiyle -1 değerini otomatik olarak değiştirir.
Kullanım kısıtlamaları
Geçici kaynak adlarını kullanırken aşağıdaki kuralları göz önünde bulundurun:
- Sıra önemlidir: Geçici kaynak adını yalnızca tanımladıktan sonra referans olarak kullanabilirsiniz. Bir işlemler listesinde, bağımlı işlem (ör. reklam grubu oluşturma), üst kaynağını oluşturan işlemden (ör. kampanya oluşturma) sonra görünmelidir.
- Tek istek veya toplu iş kapsamı: Geçici kaynak adları ayrı işlerde veya değiştirme isteklerinde kalıcı olmaz. Önceki bir işte veya değişiklik isteğinde oluşturulan bir kaynağa referans vermek için sistem tarafından oluşturulan gerçek kaynak adını kullanın.
- Global benzersizlik: Tek bir iş veya değişiklik isteğinde, her geçici kaynak adı tüm kaynak türlerinde benzersiz bir negatif tam sayı kullanmalıdır.
Örneğin, aynı istekte hem bir kampanyaya hem de bir reklam grubuna
-1atayamazsınız. Aynı istek veya toplu iş içinde geçici bir kimliğin yeniden kullanılmasıNewResourceCreationError.DUPLICATE_TEMP_IDShatası döndürür.
Örnek yük
Tek bir API isteğine veya toplu işe kampanya, reklam grubu ve reklam eklemek istediğinizi varsayalım. Aşağıdaki REST JSON örneğinde gösterildiği gibi (kısa olması için diğer gerekli kaynak alanları çıkarılmıştır) mutateOperations dizisini bir GoogleAdsService.Mutate veya BatchJobService.AddBatchJobOperations istek yükünde yapılandırabilirsiniz:
{
"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"
}
}
}
]
}
Bu örnekte aşağıdaki önemli ayrıntılar gösterilmektedir:
- Reklam grubu,
-1kampanyaya zaten atandığı için yeni bir geçici ID (-2) kullanıyor. - Reklam grubu, kendisini önceki işlemde oluşturulan kampanyaya bağlamak için
customers/CUSTOMER_ID/campaigns/-1öğesini referans alıyor. - İstekle ilgili sonraki işlemler yeni reklama referans vermediğinden
adGroupAdOperation,customers/CUSTOMER_ID/adGroups/-2öğesine referans veriyor veresourceNameöğesini atlıyor.
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.