임시 ID 사용

BatchJobService의 강력한 기능은 임시 ID 사용을 지원한다는 점입니다.

음수 ID를 사용하도록 새 리소스의 resource_name를 지정하면 됩니다. 예를 들어 캠페인을 만들고 리소스 이름을 customers/<YOUR_CUSTOMER_ID>/campaigns/-1로 지정하면 나중에 광고 그룹을 만들 때 해당 리소스 이름으로 참조할 수 있으며 지정한 -1는 생성된 캠페인의 실제 ID로 자동 대체됩니다.

임시 리소스 이름을 사용할 때 유의해야 할 사항은 다음과 같습니다.

  • 임시 리소스 이름은 리소스에 정의된 후에만 사용할 수 있습니다. 아래 예에서는 광고 그룹 작업이 작업 목록에서 캠페인 작업 뒤에 표시되어야 합니다.
  • 임시 리소스 이름은 작업 또는 변형 요청 전반에서 기억되지 않습니다. 이전 작업 또는 변형 요청에서 만든 리소스를 참조하려면 실제 리소스 이름을 사용하세요.
  • 단일 작업 또는 변형 요청의 경우 각 임시 리소스 이름은 리소스 유형이 다르더라도 고유한 음수를 사용해야 합니다. 임시 ID가 단일 작업 또는 변형 요청에서 재사용되면 오류가 반환됩니다.

위에서 언급한 상황에 관한 좀 더 구체적인 예를 들어 보겠습니다. 단일 API 요청에 캠페인, 광고 그룹, 광고를 추가하려고 한다고 가정해 보겠습니다. 다음과 유사한 요청 구조를 만듭니다.

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

캠페인에 사용한 -1를 재사용할 수 없으므로 광고 그룹에 새 임시 ID가 사용되며 광고 그룹 광고를 만들 때도 이 광고 그룹을 참조합니다. 광고 그룹 자체는 요청의 이전 작업에서 캠페인에 대해 설정한 리소스 이름을 참조하지만, ad_group_ad_operationresource_name는 더 이상 작업에서 참조하지 않으므로 필요하지 않습니다.