Usa ID temporales

Una función potente de BatchJobService es que admite el uso de IDs temporales.

Para ello, especifica el resource_name del recurso nuevo para 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 crees el grupo de anuncios en una operación posterior, podrás hacer referencia a él por ese nombre de recurso y el -1 que especificaste se reemplazará automáticamente por el ID real de la campaña creada.

A continuación, se incluyen algunos aspectos que debes tener en cuenta cuando utilizas nombres de recursos temporales:

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

Ejemplo

Para dar un ejemplo más concreto de la situación mencionada anteriormente, supongamos que quieres 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 similar a la 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 nuevo ID temporal para el grupo de anuncios, ya que no podemos volver a usar el -1 que usamos para la campaña. También 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.