Używanie identyfikatorów tymczasowych

Potężną funkcją BatchJobService jest to, że obsługuje ona tymczasowe identyfikatory.

Możesz to zrobić, określając w przypadku nowego zasobu parametr resource_name, aby użyć negatywnego identyfikatora. Jeśli np. utworzysz kampanię i podasz jej nazwę zasobu jako customers/<YOUR_CUSTOMER_ID>/campaigns/-1, podczas tworzenia grupy reklam w późniejszej operacji możesz się do niej odwoływać za pomocą tej nazwy zasobu, a podana przez Ciebie wartość customers/<YOUR_CUSTOMER_ID>/campaigns/-1 zostanie automatycznie zastąpiona rzeczywistym identyfikatorem utworzonej kampanii.-1

Podczas używania tymczasowych nazw zasobów należy pamiętać o następujących kwestiach:

  • Nazwa tymczasowego zasobu może być używana dopiero po zdefiniowaniu w zasobie. W przykładzie poniżej operacja dotycząca grupy reklam musi się pojawić na liście operacji po operacji dotyczącej kampanii.
  • Nazwa tymczasowego zasobu nie jest zapamiętywana w zadaniach ani żądaniach modyfikacji. Aby odwoływać się do zasobu utworzonego w poprzednim zadaniu lub żądaniu modyfikacji, użyj jego rzeczywistej nazwy.
  • W przypadku pojedynczego zadania lub żądania modyfikacji każda tymczasowa nazwa zasobu musi zawierać unikalny numer ujemny, nawet jeśli są to różne typy zasobów. Jeśli tymczasowy identyfikator zostanie użyty ponownie w ramach pojedynczego zadania lub żądania modyfikacji, zwrócony zostanie błąd.

Przykład

Aby podać bardziej konkretny przykład sytuacji opisanej powyżej, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu interfejsu API. 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 w przypadku grupy reklam używany jest nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć identyfikatora -1 użytego w przypadku kampanii. Odwołujemy się też do tej grupy reklam podczas tworzenia reklamy grupy reklam. Sama grupa reklam odwołuje się do nazwy zasobu utworzonej w ramach kampanii w poprzedniej operacji w żądaniu, podczas gdy resource_namead_group_ad_operation nie jest konieczne, ponieważ żadna kolejna operacja do niej się nie odwołuje.