Usa ID temporales

Una característica poderosa de BatchJobService es que admite el uso de ID temporales.

Para ello, especifica el nuevo resource_name del recurso a fin de usar un ID negativo. Por ejemplo, si creas una campaña y especificas su nombre de recurso como customers/<YOUR_CUSTOMER_ID>/campaigns/-1, cuando creas el grupo de anuncios en una operación posterior, puedes hacer referencia a él con ese nombre de recurso, y el -1 que especificaste se reemplazará automáticamente por el ID real de la campaña creada.

Estos son algunos aspectos que debes tener en cuenta cuando usas nombres de recursos temporales:

  • Un nombre de recurso temporal solo se puede usar después de definirse en un recurso. En el siguiente ejemplo, la operación del grupo de anuncios debería aparecer después de la operación de campaña en la lista de operaciones.
  • Los nombres de recursos temporales no se recuerdan en los trabajos ni las solicitudes de mutación. Para hacer referencia a un recurso creado en un trabajo anterior o una solicitud de mutación, usa el nombre del recurso real.
  • Para un solo trabajo o una solicitud de mutación, cada nombre de recurso temporal debe usar un número negativo único, incluso si provienen de diferentes tipos de recursos. Si se vuelve a usar un ID temporal en una solicitud de trabajo o mutación, se muestra un error.

Ejemplo

Para dar un ejemplo más concreto a la situación mencionada anteriormente, supongamos que quiere agregar una campaña, un grupo de anuncios y un anuncio en una sola solicitud a la API. Deberías crear una estructura para tu solicitud análoga a lo siguiente:

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

Observa que se usa un ID temporal nuevo para el grupo de anuncios, ya que no podemos reutilizar el -1 que usamos para la campaña. Además, hacemos referencia a este grupo de anuncios cuando creamos un anuncio de grupo de anuncios. El grupo de anuncios hace referencia al nombre del recurso que establecimos para la campaña en una operación anterior de la solicitud, mientras que resource_name en ad_group_ad_operation no es necesario, ya que ninguna otra operación hace referencia a él.