Como usar IDs temporários

Um recurso eficiente do BatchJobService é que ele oferece suporte ao uso de IDs temporários.

Para fazer isso, especifique o resource_name do novo recurso para usar um ID negativo. Por exemplo, se você criar uma campanha e especificar o nome do recurso como customers/<YOUR_CUSTOMER_ID>/campaigns/-1, quando criar o grupo de anúncios em uma operação posterior, será possível fazer referência a ele pelo nome do recurso, e o -1 especificado será automaticamente substituído pelo ID real da campanha criada.

Veja alguns pontos a serem considerados ao usar nomes de recursos temporários:

  • Um nome de recurso temporário só pode ser usado depois de ter sido definido em um recurso. No exemplo abaixo, a operação do grupo de anúncios teria que aparecer na lista de operações depois da operação da campanha.
  • Os nomes de recursos temporários não são lembrados nas tarefas ou nas solicitações mutate. Para fazer referência a um recurso criado em um job ou solicitação mutate anterior, use o nome real do recurso.
  • Para um único trabalho ou solicitação de mutação, cada nome de recurso temporário precisa usar um número negativo exclusivo, mesmo que sejam de tipos de recurso diferentes. Se um ID temporário for reutilizado em um único job ou solicitação de mutação, um erro será retornado.

Exemplo

Para dar um exemplo mais concreto da situação mencionada acima, suponha que você queira adicionar uma campanha, um grupo de anúncios e um anúncio a uma única solicitação de API. Você criaria uma estrutura para sua solicitação semelhante à seguinte:

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

Um novo ID temporário é usado para o grupo de anúncios, já que não podemos reutilizar o -1 usado na campanha, e também nos referimos a esse grupo de anúncios ao criar um anúncio do grupo de anúncios. O próprio grupo de anúncios faz referência ao nome do recurso que estabelecemos para a campanha em uma operação anterior na solicitação, enquanto resource_name em ad_group_ad_operation não é necessário porque nenhuma outra operação faz referência a ele.