Przydatną funkcją BatchJobService jest to, że
obsługuje tymczasowe identyfikatory.
Możesz to zrobić, podając resource_name nowego zasobu, aby użyć identyfikatora ujemnego. Załóżmy na przykład, że tworzysz kampanię i określasz jej nazwę zasobu
jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1. Gdy utworzysz grupę reklam w późniejszej operacji, możesz się do niej odwołać za pomocą tej nazwy zasobu, a określony przez Ciebie identyfikator -1 zostanie automatycznie zastąpiony rzeczywistym identyfikatorem utworzonej kampanii.
Oto kilka kwestii, o których warto pamiętać podczas korzystania z tymczasowych nazw zasobów:
- Tymczasowej nazwy zasobu można użyć dopiero po zdefiniowaniu jej w zasobie. W poniższym przykładzie operacja grupy reklam musiałaby się pojawić po operacji kampanii na liście operacji.
- Tymczasowe nazwy zasobów nie są zapamiętywane w różnych zadaniach ani żądaniach mutate. Aby odwołać się do zasobu utworzonego w poprzednim zadaniu lub żądaniu mutate, użyj jego rzeczywistej nazwy zasobu.
- W przypadku pojedynczego zadania lub żądania mutate każda tymczasowa nazwa zasobu musi używać unikalnej liczby ujemnej, nawet jeśli pochodzi z różnych typów zasobów. Jeśli tymczasowy identyfikator zostanie ponownie użyty w jednym zadaniu lub żądaniu mutate, zostanie zwrócony błąd.
Przykład
Załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu API. Utworzysz 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"
...
}
}
},
]
W przypadku grupy reklam używany jest nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć identyfikatora -1, którego użyliśmy w przypadku kampanii. Odwołujemy się też do tej grupy reklam podczas tworzenia reklamy w grupie reklam. Sama grupa reklam odwołuje się do nazwy zasobu, którą ustaliliśmy dla kampanii w poprzedniej operacji w żądaniu, natomiast resource_name w ad_group_ad_operation nie jest konieczna, ponieważ nie odwołuje się do niej żadna inna operacja.