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ş içinde bir kampanya ve kampanyaya bağlı reklam grupları, reklamlar ve ölçütler oluşturabilirsiniz. Aşağıdaki genel kurallar ve örnekte, tek bir istek, tüm AddBatchJobOperations yüklemeleri genelinde 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 (0 hariç -1 veya -2 gibi) belirtin. Örneğin, toplu istekte bir kampanya oluştururken kaynak adını customers/CUSTOMER_ID/campaigns/-1 olarak ayarlayın.
Aynı istekte daha sonraki bir işlemde reklam grubu oluştururken üst kampanya olarak customers/CUSTOMER_ID/campaigns/-1 öğesine referans verin. API, -1 değerini otomatik olarak oluşturma sırasında oluşturulan gerçek kampanya kimliğiyle 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 adlarına yalnızca tanımladıktan sonra referans verebilirsiniz. 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şiklik 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ği veya toplu iş ile bir kampanya, reklam grubu ve reklam eklemek istediğinizi varsayalım. Aşağıdaki REST JSON örneğinde (kısa olması için diğer gerekli kaynak alanları çıkarılmıştır) gösterildiği gibi mutateOperations dizisini 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/-1değerine başvurur. adGroupAdOperation,customers/CUSTOMER_ID/adGroups/-2öğesine referans verir veresourceNameöğesini atlar. Bunun nedeni, istekteki sonraki hiçbir işlemin yeni reklama referans vermemesidir.
Toplu işlerde hata işleme
Toplu işteki standart işlemler kısmi hata etkinleştirilmiş olarak yürütüldüğünden (atomik alt gruplar hariç), geçici kimliğe sahip bir üst kaynağın doğrulaması başarısız olursa bu geçici kimliğe referans veren tüm bağımlı alt işlemler NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS hatasıyla başarısız olur.
Aynı toplu iş içindeki birden fazla create işleminde aynı negatif kimliğin yeniden kullanılması NewResourceCreationError.DUPLICATE_TEMP_IDS hatasını 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.