Zaletą BatchJobService
jest możliwość korzystania z identyfikatorów tymczasowych.
Aby to zrobić, określ parametr resource_name
nowego zasobu w celu użycia 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 będzie można odwołać się do niej, podając tę nazwę zasobu. Wskazana przez Ciebie wartość -1
zostanie automatycznie zastąpiona rzeczywistym identyfikatorem utworzonej kampanii.
Oto kilka kwestii, o których należy pamiętać podczas korzystania z tymczasowych nazw zasobów:
- Tymczasowej nazwy zasobu można używać tylko po zdefiniowaniu jej w zasobie. W przykładzie poniżej operacja na poziomie grupy reklam musi pojawić się po operacji kampanii na liście operacji.
- Tymczasowe nazwy zasobów nie są zapamiętywane w zadaniach ani w żądaniach przekształcania. Aby odwołać się do zasobu utworzonego w poprzednim zadaniu lub zmienić żądanie, użyj jego rzeczywistej nazwy.
- W przypadku pojedynczego zadania lub żądania mutacji każda tymczasowa nazwa zasobu musi zawierać niepowtarzalną liczbę ujemną, nawet jeśli pochodzą z różnych typów zasobów. Jeśli tymczasowy identyfikator jest używany ponownie w pojedynczym zadaniu lub w żądaniu przekształcenia, zwracany jest błąd.
Przykład
Aby podać bardziej konkretny przykład dla powyższej sytuacji, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu do interfejsu API. W tym celu 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 grupie reklam został użyty nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć zasobu -1
użytego w kampanii, a także odwołujemy się do tej grupy reklam podczas tworzenia reklamy w grupie reklam. Sama grupa reklam odwołuje się do nazwy zasobu kampanii, którą utworzyliśmy na potrzeby kampanii we wcześniejszej operacji w żądaniu. Z kolei właściwość resource_name
w żądaniu ad_group_ad_operation
nie jest potrzebna, ponieważ żadna dalsza operacja się do niej nie odwołuje.