Używanie identyfikatorów tymczasowych

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_namead_group_ad_operation nie jest konieczne, ponieważ nie odwołuje się do niego żadna inna operacja.