Usa ID temporales

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

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

Estos son algunos puntos que debes tener en cuenta cuando uses nombres de recursos temporales:

  • Un nombre de recurso temporal solo se puede usar después de haber sido definido en una recurso. En el siguiente ejemplo, la operación del grupo de anuncios tendría que 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 trabajos o solicitudes de modificación. para hacer referencia a un recurso creado en un trabajo anterior o en una solicitud de mutación, usa su nombre real del recurso.
  • Para una solicitud de mutación o trabajo único, cada nombre de recurso temporal debe usar un número negativo único, incluso si pertenecen a diferentes tipos de recursos. Si un ID temporal se vuelve a usar en una única solicitud de trabajo o mutación, y luego se genera un error el resultado.

Ejemplo

Para dar un ejemplo más concreto de la situación mencionada anteriormente, supongamos que agregar una campaña, un grupo de anuncios y un anuncio en una sola solicitud a la API. Tú crearía 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"
        ...
      }
    }
  },
]

Nota que se usa un nuevo ID temporal para el grupo de anuncios, ya que no podemos reutilizarlo el -1 que usamos para la campaña. También hacemos referencia a este grupo de anuncios cuando crear un anuncio del grupo de anuncios. El grupo de anuncios en sí hace referencia al nombre del recurso que establecida para la campaña en una operación anterior en la solicitud, mientras que resource_name en ad_group_ad_operation no es necesario porque no hay más hace referencia a ella.