Używanie identyfikatorów tymczasowych

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.