Geçici kaynak adları
BatchJobService, aynı toplu iş içindeki sonraki işlemlerde başvurulabilecek geçici kaynak adlarını destekler. Buna, sequence_token ile yüklenen birden fazla sıralı AddBatchJobOperations isteği de dahildir. Bu sayede, sunucu tarafı kimlikleri atanmadan önce tek bir toplu iş içinde kampanya ve kampanyaya bağlı reklam grupları, reklamlar ve ölçütler oluşturabilirsiniz. Aşağıdaki genel kurallarda ve örnekte, tek bir istek, tüm AddBatchJobOperations yüklemeleri genelinde BatchJob'nin 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. İşlem 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ürleri genelinde 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ğinde veya toplu işinde bir kampanya, reklam grubu ve reklam eklemek istediğinizi varsayalım. mutateOperations dizisini, aşağıdaki REST JSON örneğinde gösterildiği gibi bir GoogleAdsService.Mutate veya BatchJobService.AddBatchJobOperations istek yükünde yapılandırabilirsiniz (kısa olması için diğer gerekli kaynak alanları atlanmıştır):
{
"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:
-1kampanyaya zaten atanmış olduğundan reklam grubu 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ğerini referans alır. adGroupAdOperation,customers/CUSTOMER_ID/adGroups/-2öğesine referans verir veresourceNameöğesini atlar çünkü istekteki sonraki hiçbir işlem yeni reklama referans vermez.
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 kaynak doğrulanamazsa 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 ID'ler yalnızca kaynak oluştururken (create) veya yeni oluşturulan üst kaynaklara referans verirken geçerlidir. Örneğin, AddBatchJobOperations çağrılırken AdGroupCriterionOperation.remove içinde negatif bir geçici ID iletilirse RequestError.RESOURCE_NAME_MALFORMED döndürülür.