Potężną funkcją BatchJobService
jest to, że obsługuje ona tymczasowe identyfikatory.
Możesz to zrobić, określając w przypadku nowego zasobu parametr resource_name
, aby użyć negatywnego identyfikatora. Jeśli np. utworzysz kampanię i podasz jej nazwę zasobu jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1
, podczas tworzenia grupy reklam w późniejszej operacji możesz się do niej odwoływać za pomocą tej nazwy zasobu, a podana przez Ciebie wartość customers/<YOUR_CUSTOMER_ID>/campaigns/-1
zostanie automatycznie zastąpiona rzeczywistym identyfikatorem utworzonej kampanii.-1
Podczas używania tymczasowych nazw zasobów należy pamiętać o następujących kwestiach:
- Nazwa tymczasowego zasobu może być używana dopiero po zdefiniowaniu w zasobie. W przykładzie poniżej operacja dotycząca grupy reklam musi się pojawić na liście operacji po operacji dotyczącej kampanii.
- Nazwa tymczasowego zasobu nie jest zapamiętywana w zadaniach ani żądaniach modyfikacji. Aby odwoływać się do zasobu utworzonego w poprzednim zadaniu lub żądaniu modyfikacji, użyj jego rzeczywistej nazwy.
- W przypadku pojedynczego zadania lub żądania modyfikacji każda tymczasowa nazwa zasobu musi zawierać unikalny numer ujemny, nawet jeśli są to różne typy zasobów. Jeśli tymczasowy identyfikator zostanie użyty ponownie w ramach pojedynczego zadania lub żądania modyfikacji, zwrócony zostanie błąd.
Przykład
Aby podać bardziej konkretny przykład sytuacji opisanej powyżej, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu interfejsu API. Utwórz strukturę żądania podobną do tej:
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"
...
}
}
},
]
Zwróć uwagę, że w przypadku grupy reklam używany jest nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć identyfikatora -1
użytego w przypadku kampanii. Odwołujemy się też do tej grupy reklam podczas tworzenia reklamy grupy reklam. Sama grupa reklam odwołuje się do nazwy zasobu utworzonej w ramach kampanii w poprzedniej operacji w żądaniu, podczas gdy resource_name
w ad_group_ad_operation
nie jest konieczne, ponieważ żadna kolejna operacja do niej się nie odwołuje.