Zaawansowaną funkcją BatchJobService
jest to, że obsługuje ona tymczasowe identyfikatory.
Możesz to zrobić, podając resource_name
nowego zasobu, aby użyć ujemnego identyfikatora. Załóżmy na przykład, że tworzysz kampanię i określasz jej nazwę zasobu jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1
. Gdy w późniejszej operacji utworzysz grupę reklam, możesz się do niej odwołać za pomocą tej nazwy zasobu, a określony przez Ciebie znak -1
zostanie automatycznie zastąpiony rzeczywistym identyfikatorem utworzonej kampanii.
Oto kilka kwestii, o których musisz pamiętać, gdy używasz tymczasowych nazw zasobów:
- Tymczasowej nazwy zasobu można używać tylko po zdefiniowaniu jej w zasobie. W tym przykładzie operacja na grupie reklam musi występować po operacji na kampanii na liście operacji.
- Tymczasowe nazwy zasobów nie są zapamiętywane w przypadku zadań ani żądań mutacji. Aby odwołać się do zasobu utworzonego w poprzednim zadaniu lub żądaniu zmiany, użyj jego rzeczywistej nazwy.
- W przypadku pojedynczego zadania lub żądania zmiany każda tymczasowa nazwa zasobu musi zawierać unikalną liczbę ujemną, nawet jeśli pochodzi z różnych typów zasobów. Jeśli tymczasowy identyfikator zostanie użyty ponownie w ramach jednego zadania lub żądania zmiany, zostanie zwrócony błąd.
Przykład
Załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w ramach jednego żądania API. Struktura żądania powinna być podobna 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 we wcześniejszej operacji w żądaniu, a resource_name
w ad_group_ad_operation
nie jest konieczne, ponieważ nie odwołuje się do niego żadna inna operacja.