Używanie identyfikatorów tymczasowych

Zaletą BatchJobService jest możliwość korzystania z identyfikatorów tymczasowych.

Aby to zrobić, określ parametr resource_name nowego zasobu w celu użycia 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 będzie można odwołać się do niej, podając tę nazwę zasobu. Wskazana przez Ciebie wartość -1 zostanie automatycznie zastąpiona rzeczywistym identyfikatorem utworzonej kampanii.

Oto kilka kwestii, o których należy pamiętać podczas korzystania z tymczasowych nazw zasobów:

  • Tymczasowej nazwy zasobu można używać tylko po zdefiniowaniu jej w zasobie. W przykładzie poniżej operacja na poziomie grupy reklam musi pojawić się po operacji kampanii na liście operacji.
  • Tymczasowe nazwy zasobów nie są zapamiętywane w zadaniach ani w żądaniach przekształcania. Aby odwołać się do zasobu utworzonego w poprzednim zadaniu lub zmienić żądanie, użyj jego rzeczywistej nazwy.
  • W przypadku pojedynczego zadania lub żądania mutacji każda tymczasowa nazwa zasobu musi zawierać niepowtarzalną liczbę ujemną, nawet jeśli pochodzą z różnych typów zasobów. Jeśli tymczasowy identyfikator jest używany ponownie w pojedynczym zadaniu lub w żądaniu przekształcenia, zwracany jest błąd.

Przykład

Aby podać bardziej konkretny przykład dla powyższej sytuacji, załóżmy, że chcesz dodać kampanię, grupę reklam i reklamę w jednym żądaniu do interfejsu API. W tym celu 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 grupie reklam został użyty nowy tymczasowy identyfikator, ponieważ nie możemy ponownie użyć zasobu -1 użytego w kampanii, a także odwołujemy się do tej grupy reklam podczas tworzenia reklamy w grupie reklam. Sama grupa reklam odwołuje się do nazwy zasobu kampanii, którą utworzyliśmy na potrzeby kampanii we wcześniejszej operacji w żądaniu. Z kolei właściwość resource_name w żądaniu ad_group_ad_operation nie jest potrzebna, ponieważ żadna dalsza operacja się do niej nie odwołuje.