Zaletą usługi BatchJobService
jest możliwość używania identyfikatorów tymczasowych.
Możesz to zrobić, określając wartość resource_name
nowego zasobu i korzystając z ujemnego identyfikatora. Jeśli np. utworzysz kampanię i określisz jej nazwę zasobu jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1
, to podczas tworzenia tej grupy reklam w późniejszej operacji możesz się do niej odwoływać, korzystając z tej nazwy zasobu, a wskazana przez Ciebie wartość -1
zostanie automatycznie zastąpiona rzeczywistym identyfikatorem utworzonej kampanii.
Jeśli używasz tymczasowych nazw zasobów, pamiętaj o tych uwagach:
- Tymczasowej nazwy zasobu można używać tylko po zdefiniowaniu jej w zasobie. W przykładzie poniżej działanie grupy reklam musi pojawić się na liście operacji po zakończeniu kampanii.
- Nazwy zasobów tymczasowych nie są zapamiętywane w zadaniach ani w żądaniach mutacji. Aby odwołać się do zasobu utworzonego w poprzednim zadaniu lub zmodyfikować żądanie, użyj jego rzeczywistej nazwy.
- W przypadku pojedynczego zadania lub żądania mutacji każda nazwa zasobu tymczasowego musi używać unikalnej liczby ujemnej, nawet jeśli pochodzi z różnych typów zasobów. Jeśli identyfikator tymczasowy zostanie użyty ponownie w pojedynczym zadaniu lub w żądaniu mutacji, zostanie zwrócony błąd.
Przykład
Aby podać bardziej konkretny przykład powyższej sytuacji, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w pojedynczym żądaniu do interfejsu API. Utwórz strukturę żądania analogiczną 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 został użyty nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć identyfikatora -1
użytego w kampanii. Dodatkowo wykorzystujemy tę grupę podczas tworzenia reklamy w grupie reklam. Sama grupa reklam odwołuje się do nazwy zasobu ustalonej dla kampanii w wcześniejszym działaniu w żądaniu, natomiast parametr resource_name
w żądaniu ad_group_ad_operation
nie jest potrzebny, ponieważ żadna operacja nie będzie się do niego odnieść.