Utilizzare ID temporanei

Nomi delle risorse temporanei

BatchJobService supporta i nomi delle risorse temporanee a cui è possibile fare riferimento nelle operazioni successive all'interno dello stesso job batch, anche in più richieste AddBatchJobOperations sequenziali caricate con un sequence_token. In questo modo, puoi creare una campagna e i relativi gruppi di annunci, annunci e criteri dipendenti in un unico job batch prima che vengano assegnati gli ID lato server. Nelle seguenti regole generali ed esempio, una singola richiesta si riferisce a un intero BatchJob in tutti i suoi caricamenti di AddBatchJobOperations.

Puoi farlo specificando il resource_name della nuova risorsa da utilizzare un ID negativo. Ad esempio, supponiamo che tu crei una campagna e specifichi il relativo nome risorsa come customers/<YOUR_CUSTOMER_ID>/campaigns/-1. Quando crei il gruppo di annunci in un'operazione successiva, puoi farvi riferimento in base al nome della risorsa e il -1 che hai specificato verrà sostituito automaticamente dall'ID effettivo della campagna creata.

Ecco alcuni aspetti da tenere presente quando utilizzi i nomi delle risorse temporanei:

  • Un nome di risorsa temporaneo può essere utilizzato solo dopo essere stato definito in una risorsa. Nell'esempio seguente, l'operazione del gruppo di annunci deve essere visualizzata dopo l'operazione della campagna nell'elenco delle operazioni.
  • I nomi delle risorse temporanee non vengono memorizzati tra job o richieste di mutazione. Per fare riferimento a una risorsa creata in un job o in una richiesta di modifica precedente, utilizza il nome risorsa effettivo.
  • Per una singola richiesta di modifica o di lavoro, ogni nome di risorsa temporanea deve utilizzare un numero negativo univoco, anche se appartengono a tipi di risorse diversi. Se un ID temporaneo viene riutilizzato in un singolo job o in una richiesta di modifica, viene restituito un errore.

Esempio

Supponiamo che tu voglia aggiungere una campagna, un gruppo di annunci e un annuncio in un'unica richiesta API. Devi creare una struttura per la richiesta analoga alla seguente:

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"
        ...
      }
    }
  },
]

Per il gruppo di annunci viene utilizzato un nuovo ID temporaneo, poiché non è possibile riutilizzare -1 che abbiamo utilizzato per la campagna. Inoltre, facciamo riferimento a questo gruppo di annunci quando creiamo un annuncio del gruppo di annunci. Il gruppo di annunci fa riferimento al nome della risorsa che abbiamo stabilito per la campagna in un'operazione precedente della richiesta, mentre resource_name in ad_group_ad_operation non è necessario perché non fa riferimento a nessun'altra operazione.

Gestione degli errori nei job batch

Poiché le operazioni standard in un job batch vengono eseguite con l'opzione errore parziale abilitata (tranne all'interno dei batch secondari atomici), se la convalida di una risorsa principale con un ID temporaneo non va a buon fine, tutte le operazioni secondarie dipendenti che fanno riferimento a quell'ID temporaneo non vanno a buon fine e viene visualizzato l'errore NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS. Il riutilizzo dello stesso ID negativo in più operazioni create all'interno dello stesso job batch restituisce NewResourceCreationError.DUPLICATE_TEMP_IDS. Gli ID temporanei sono validi solo quando crei risorse (create) o fai riferimento a risorse principali appena create; ad esempio, il passaggio di un ID temporaneo negativo in AdGroupCriterionOperation.remove quando chiami AddBatchJobOperations restituisce RequestError.RESOURCE_NAME_MALFORMED.