임시 리소스 이름
BatchJobService는 동일한 일괄 작업 내에서 후속 작업에서 참조할 수 있는 임시 리소스 이름을 지원합니다. 여기에는 sequence_token로 업로드된 여러 순차적 AddBatchJobOperations 요청 간의 작업도 포함됩니다. 이렇게 하면 서버 측 ID가 할당되기 전에 단일 일괄 작업에서 캠페인과 종속 광고 그룹, 광고, 기준을 만들 수 있습니다. 다음 일반 규칙과 예시에서 단일 요청은 모든 AddBatchJobOperations 업로드에 걸친 전체 BatchJob를 의미합니다.
음수 ID를 사용하도록 새 리소스의 resource_name를 지정하면 됩니다. 예를 들어 캠페인을 만들고 리소스 이름을 customers/<YOUR_CUSTOMER_ID>/campaigns/-1로 지정한다고 가정해 보겠습니다. 나중에 작업을 통해 광고 그룹을 만들 때 해당 리소스 이름으로 참조하면 지정한 -1이 생성된 캠페인의 실제 ID로 자동 대체됩니다.
임시 리소스 이름을 사용할 때 유의해야 할 사항은 다음과 같습니다.
- 임시 리소스 이름은 리소스에 정의된 후에만 사용할 수 있습니다. 다음 예에서 광고 그룹 작업은 작업 목록에서 캠페인 작업 뒤에 표시되어야 합니다.
- 임시 리소스 이름은 작업 또는 변이 요청 간에 기억되지 않습니다. 이전 작업 또는 mutate 요청에서 생성된 리소스를 참조하려면 실제 리소스 이름을 사용하세요.
- 단일 작업 또는 mutate 요청의 경우 임시 리소스 이름이 서로 다른 리소스 유형에서 온 것이더라도 각 임시 리소스 이름은 고유한 음수를 사용해야 합니다. 임시 ID가 단일 작업 또는 mutate 요청에서 재사용되면 오류가 반환됩니다.
예
단일 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_operation의 resource_name는 더 이상 참조하는 작업이 없으므로 필요하지 않습니다.
일괄 작업의 오류 처리
일괄 작업의 표준 작업은 원자적 하위 일괄 내를 제외하고 부분 실패가 사용 설정된 상태로 실행되므로 임시 ID가 있는 상위 리소스의 유효성 검사가 실패하면 해당 임시 ID를 참조하는 종속 하위 작업이 NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS 오류와 함께 실패합니다.
동일한 일괄 작업 내의 여러 create 작업에서 동일한 음수 ID를 재사용하면 NewResourceCreationError.DUPLICATE_TEMP_IDS이 반환됩니다. 임시 ID는 리소스를 만들거나 (create) 새로 만든 상위 리소스를 참조할 때만 유효합니다. 예를 들어 AddBatchJobOperations를 호출할 때 AdGroupCriterionOperation.remove에 음수 임시 ID를 전달하면 RequestError.RESOURCE_NAME_MALFORMED이 반환됩니다.