Używanie identyfikatorów tymczasowych

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ść.