임시 ID 사용

임시 리소스 이름

BatchJobService는 동일한 일괄 작업 내에서 후속 작업에서 참조할 수 있는 임시 리소스 이름을 지원합니다. 여기에는 sequence_token로 업로드된 여러 순차적 AddBatchJobOperations 요청 간의 작업도 포함됩니다. 이렇게 하면 서버 측 ID가 할당되기 전에 단일 일괄 작업에서 캠페인과 종속 광고 그룹, 광고, 기준을 만들 수 있습니다. 다음 일반 규칙과 예시에서 단일 요청은 모든 AddBatchJobOperations 업로드에 걸친 전체 BatchJob를 의미합니다.

동일한 변이 요청 또는 일괄 작업 내에서 새로 생성된 리소스를 참조하려면 새 리소스의 resource_name 필드에 음수 정수 ID (예: -1 또는 -2, 0 제외)를 지정합니다. 예를 들어 일괄 요청에서 캠페인을 만들 때 리소스 이름을 customers/CUSTOMER_ID/campaigns/-1로 설정합니다. 동일한 요청 내의 후속 작업에서 광고 그룹을 만들 때는 customers/CUSTOMER_ID/campaigns/-1를 상위 캠페인으로 참조하세요. API는 생성 시 생성된 실제 캠페인 ID로 -1를 자동으로 대체합니다.

사용 제약 조건

임시 리소스 이름을 사용할 때는 다음 규칙에 유의하세요.

  • 순서가 중요함: 임시 리소스 이름은 정의한 후에만 참조할 수 있습니다. 작업 목록에서 종속 작업 (예: 광고 그룹 생성)은 상위 리소스를 생성하는 작업 (예: 캠페인 생성) 뒤에 표시되어야 합니다.
  • 단일 요청 또는 일괄 작업 범위: 임시 리소스 이름은 별도의 작업이나 변이 요청 간에 유지되지 않습니다. 이전 작업 또는 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이 반환됩니다.