임시 리소스 이름
BatchJobService는 동일한 일괄 작업 내의 후속 작업에서 참조할 수 있는 임시 리소스 이름을 지원합니다. 여기에는 sequence_token으로 업로드된 여러 순차적 AddBatchJobOperations 요청이 포함됩니다. 이를 통해 서버 측 ID가 할당되기 전에 단일 일괄 작업에서 캠페인과 종속 광고 그룹, 광고, 기준을 만들 수 있습니다. 다음 일반 규칙
및 예시에서 단일 요청은 모든 AddBatchJobOperations 업로드에서 전체 BatchJob을 참조합니다.
동일한 mutate 요청 또는 일괄 작업 내에서 새로 생성된 리소스를 참조하려면 새 리소스의 resource_name 필드에 음의 정수 ID (예: 0을 제외한 -1 또는 -2)를 지정합니다. 예를 들어 일괄 요청에서 캠페인을 만들 때 리소스 이름을 customers/CUSTOMER_ID/campaigns/-1로 설정합니다.
동일한 요청 내의 후속 작업에서 광고 그룹을 만들 때 customers/CUSTOMER_ID/campaigns/-1을 상위 캠페인으로 참조합니다. API는 생성 시 생성된 실제 캠페인 ID로 -1을 자동으로 대체합니다.
사용 제약조건
임시 리소스 이름을 사용할 때는 다음 규칙에 유의하세요.
- 순서가 중요함: 임시 리소스 이름은 정의한 후에만 참조할 수 있습니다. 작업 목록에서 종속 작업 (예: 광고 그룹 만들기)은 상위 리소스를 만드는 작업 (예: 캠페인 만들기) 뒤에 표시되어야 합니다.
- 단일 요청 또는 일괄 작업 범위: 임시 리소스 이름은 별도의 작업 또는 mutate 요청에서 유지되지 않습니다. 이전 작업 또는 mutate 요청에서 생성된 리소스를 참조하려면 실제 시스템 생성 리소스 이름을 사용합니다.
- 전역 고유성: 단일 작업 또는 mutate 요청 내에서 각 임시 리소스 이름은 모든 리소스 유형에서 고유한 음의 정수를 사용해야 합니다.
예를 들어 동일한 요청에서 캠페인과 광고 그룹 모두에
-1을 할당할 수는 없습니다. 동일한 요청 또는 일괄 작업 내에서 임시 ID를 다시 사용하면NewResourceCreationError.DUPLICATE_TEMP_IDS오류가 반환됩니다.
페이로드 예시
단일 API 요청 또는 일괄 작업에서 캠페인, 광고 그룹, 광고를 추가한다고 가정해 보겠습니다. 다음 REST JSON 예시와 같이 GoogleAdsService.Mutate 또는 BatchJobService.AddBatchJobOperations 요청 페이로드에서 mutateOperations 배열을 구성할 수 있습니다 (간결성을 위해 기타 필수 리소스 필드는 생략됨).
{
"mutateOperations": [
{
"campaignOperation": {
"create": {
"resourceName": "customers/CUSTOMER_ID/campaigns/-1"
}
}
},
{
"adGroupOperation": {
"create": {
"resourceName": "customers/CUSTOMER_ID/adGroups/-2",
"campaign": "customers/CUSTOMER_ID/campaigns/-1"
}
}
},
{
"adGroupAdOperation": {
"create": {
"adGroup": "customers/CUSTOMER_ID/adGroups/-2"
}
}
}
]
}
이 예시에서는 다음 주요 세부정보를 보여줍니다.
-1이 이미 캠페인에 할당되어 있으므로 광고 그룹은 새 임시 ID (-2)를 사용합니다.- 광고 그룹은
customers/CUSTOMER_ID/campaigns/-1을 참조하여 이전 작업에서 생성된 캠페인에 연결합니다. adGroupAdOperation은customers/CUSTOMER_ID/adGroups/-2를 참조하고 요청의 후속 작업에서 새 광고를 참조하지 않으므로resourceName을 생략합니다.
일괄 작업의 오류 처리
일괄 작업의 표준 작업은
부분 실패가 사용 설정된 상태로 실행되므로 (원자 하위 일괄 처리 내 제외)
임시 ID가 있는 상위 리소스의 유효성 검사에 실패하면 해당
임시 ID를 참조하는 종속 하위 작업이
NewResourceCreationError.TEMP_ID_RESOURCE_HAD_ERRORS로 실패합니다.
동일한 일괄 작업 내에서 여러 create 작업에 동일한 음의 ID를 다시 사용하면
NewResourceCreationError.DUPLICATE_TEMP_IDS가 반환됩니다. 임시
ID는 리소스를 만들거나 (create) 새로 생성된 상위 리소스를 참조할 때만 유효합니다. 예를 들어
AddBatchJobOperations를 호출할 때
AdGroupCriterionOperation.remove에 음의 임시 ID를 전달하면
RequestError.RESOURCE_NAME_MALFORMED가 반환됩니다.