Używanie identyfikatorów tymczasowych

Ważną zaletą interfejsu BatchJobService jest to, że obsługuje on identyfikatory tymczasowe.

Aby to zrobić, określ nowy zasób resource_name jako identyfikator ujemny. Jeśli np. utworzysz kampanię i określisz jej nazwę zasobu jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1, podczas tworzenia grupy reklam w późniejszej operacji możesz odwoływać się do niej przy użyciu tej nazwy zasobu, a wybrany przez Ciebie element -1 zostanie automatycznie zastąpiony rzeczywistym identyfikatorem utworzonej kampanii.

Oto kilka rzeczy, o których warto pamiętać podczas korzystania z tymczasowych nazw zasobów:

  • Tymczasowej nazwy zasobu można używać tylko po zdefiniowaniu jej w zasobie. W poniższym przykładzie działanie grupy reklam pojawi się po operacji kampanii na liście operacji.
  • Tymczasowe nazwy zasobów nie są zapamiętywane w zadaniach ani żądaniach mutacji. Aby odwołać się do zasobu utworzonego we poprzednim żądaniu lub mutacji, użyj jego rzeczywistej nazwy.
  • W przypadku pojedynczego zadania lub żądania mutacji każda tymczasowa nazwa zasobu musi korzystać z unikalnej liczby ujemnej, nawet jeśli pochodzą z różnych typów zasobów. Jeśli ten sam identyfikator zostanie użyty ponownie w jednym żądaniu lub żądaniu mutacji, zostanie zwrócony błąd.

Przykład

Aby wyczerpać bardziej konkretny przykład tej sytuacji, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu interfejsu API. Możesz utworzyć strukturę żądania analogicznie 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 grupie reklam został użyty nowy identyfikator tymczasowy, ponieważ nie można ponownie wykorzystać -1 w kampanii. Odwołujemy się też do tej grupy podczas tworzenia reklamy w grupie reklam. Sama grupa reklam odwołuje się do nazwy zasobu określonej przez nas w ramach kampanii we wcześniejszej operacji w żądaniu, a element resource_name w tagu ad_group_ad_operation nie jest konieczny, ponieważ żadna inna operacja nie odwołuje się do niego.