동영상: 2019년 워크숍에서 발표된 서비스 및 리소스 이야기를 확인하세요.
이 가이드에서는 Google Ads API를 구성하는 기본 구성요소를 소개합니다. Google Ads API는 리소스와 서비스로 구성됩니다. 리소스는 Google Ads 항목을 나타내며, 서비스는 Google Ads 항목을 검색 및 조작합니다.
객체 계층 구조
Google Ads 계정은 객체의 계층 구조로 볼 수 있습니다.
계정의 최상위 리소스는 고객입니다.
각 계정에는 하나 이상의 활성 캠페인이 포함됩니다.
각
Campaign
에는 광고를 논리적 컬렉션으로 그룹화하는 데 사용되는 하나 이상의 광고그룹이 포함됩니다.각
AdGroup
에는 하나 이상의 광고그룹 광고가 포함되어 있습니다.AdGroupAd
는 실행 중인 광고를 나타냅니다.
광고그룹 또는 캠페인에 하나 이상의 AdGroupCriterion
또는 CampaignCriterion
를 연결할 수 있습니다. 광고가 트리거되는 방식을 정의하는 기준을 나타냅니다.
키워드, 연령대, 위치와 같은 다양한 기준 유형이 있습니다. 캠페인 수준에서 정의된 기준은 캠페인 내의 다른 모든 리소스에 영향을 미칩니다. 캠페인 전체 예산 및 날짜도 지정할 수 있습니다.
마지막으로 계정, 캠페인 또는 광고그룹 수준에서 광고 확장을 연결할 수 있습니다. 광고 확장을 사용하면 전화번호, 상세 주소, 프로모션 등의 추가 정보를 광고에 제공할 수 있습니다.
자료
리소스는 Google Ads 계정 내의 항목을 나타냅니다.
Campaign
와 AdGroup
는 두 가지 리소스 예시입니다.
객체 ID
Google Ads의 모든 객체는 자체 ID로 식별됩니다. 이 ID 중 일부는 모든 Google Ads 계정에서 전역적으로 고유하고 나머지는 한정된 범위 내에서만 고유합니다.
객체 ID | 고유성 범위 | 전역적으로 고유하나요? |
---|---|---|
예산 ID | 전역 | 예 |
캠페인 ID | 전역 | 예 |
AdGroup ID | 전역 | 예 |
광고 ID | 광고그룹 | 아니요, 하지만 (AdGroupId , AdId ) 쌍은 전역적으로 고유합니다. |
가이드 ID | 광고그룹 | 아니요, 하지만 (AdGroupId , CriterionId ) 쌍은 전역적으로 고유합니다. |
캠페인 기준 ID | 캠페인 | 아니요, 하지만 (CampaignId , CriterionId ) 쌍은 전역적으로 고유합니다. |
광고 확장 | 캠페인 | 아니요, 하지만 (CampaignId , AdExtensionId ) 쌍은 전역적으로 고유합니다. |
피드 ID | 글로벌 수준 | 예 |
Feed Item ID | 전역 | 예 |
Feed Attribute ID | 피드 | 아니요 |
Feed Mapping ID | 전역 | 예 |
라벨 ID | 전역 | 예 |
사용자 목록 ID | 전역 | 예 |
이러한 ID 규칙은 Google Ads 객체의 로컬 스토리지를 설계할 때 유용합니다.
일부 객체는 여러 항목 유형에 사용할 수 있습니다. 이 경우 객체에 콘텐츠를 설명하는 type
필드가 포함됩니다. 예를 들어 AdGroupAd
은 텍스트 광고, 호텔 광고, 지역 광고 등을 참조할 수 있습니다. 이 값은 AdGroupAd.ad.type
필드를 통해 액세스할 수 있으며 AdType
enum에 값을 반환합니다.
리소스 이름
각 리소스는 리소스와 그 상위 요소를 경로로 연결하는 resource_name
문자열로 고유하게 식별됩니다. 예를 들어 캠페인 리소스 이름의 형식은 다음과 같습니다.
customers/customer_id/campaigns/campaign_id
따라서 Google Ads 계정에서 고객 ID가 1234567
인 ID가
987654
인 캠페인의 경우 resource_name
는 다음과 같습니다.
customers/1234567/campaigns/987654
서비스
서비스를 사용하면 Google Ads 항목을 검색하고 수정할 수 있습니다. 서비스에는 수정, 객체 및 통계 검색, 메타데이터 검색 서비스의 세 가지 유형이 있습니다.
객체 수정 (변형)
이러한 서비스는 mutate
요청을 사용하여 연결된 리소스 유형의 인스턴스를 수정합니다. 단일 리소스 인스턴스를 검색하는 get
요청도 제공하여 리소스 구조를 검토하는 데 유용할 수 있습니다.
서비스의 예:
CustomerService
: 고객 수정.CampaignService
: 캠페인 수정AdGroupService
: 광고그룹 수정
각 mutate
요청에는 상응하는 operation
객체가 포함되어야 합니다. 예를 들어 CampaignService.MutateCampaigns
메서드는 하나 이상의 CampaignOperation
인스턴스를 예상합니다. 작업에 대한 자세한 내용은 객체 변경 및 검사를 참고하세요.
동시 변형
Google Ads 객체는 하나 이상의 소스에서 동시에 수정할 수 없습니다. 여러 사용자가 앱에서 같은 객체를 업데이트하는 경우 또는 여러 스레드를 사용하여 Google Ads 객체를 동시에 변형하는 경우 오류가 발생할 수 있습니다. 여기에는 동일한 애플리케이션의 여러 스레드 또는 다른 애플리케이션 (예: 내 앱과 동시 Google Ads UI 세션)에서 객체를 업데이트하는 것이 포함됩니다.
API는 업데이트 전에 객체를 잠그는 방법을 제공하지 않습니다. 두 소스가 동시에 객체를 변형하려고 하면 API가 DatabaseError.CONCURRENT_MODIFICATION_ERROR
을 발생시킵니다.
비동기와 동기식 변형 비교
Google Ads API 변경 메서드는 동기식입니다. API 호출은 객체가 변경된 후에만 응답을 반환하므로 각 요청에 대한 응답을 기다려야 합니다. 이 접근 방식은 코드에 비교적 직관적이지만 프로세스가 완료될 때까지 기다려야 하는 경우 부하 분산에 부정적인 영향을 미치고 리소스를 낭비할 수 있습니다.
다른 방법은 BatchJobService를 사용하여 객체를 비동기식으로 변경하는 것입니다. 이 서비스에서는 완료를 기다리지 않고 여러 서비스에서 작업 배치를 수행합니다. 일괄 작업이 제출되면 Google Ads API 서버가 작업을 비동기식으로 실행하여 프로세스가 다른 작업을 수행할 수 있도록 해제합니다. 주기적으로 작업 상태를 확인할 수 있습니다.
비동기 처리에 관한 자세한 내용은 일괄 처리 가이드를 참고하세요.
검증 변형
실제 데이터에 대한 호출을 실제로 실행하지 않고도 대부분의 변경 요청을 검증할 수 있습니다. 실제로 작업을 실행하지 않고도 누락된 매개변수 및 잘못된 필드 값에 대한 요청을 테스트할 수 있습니다.
이 기능을 사용하려면 요청의 선택적 validate_only
부울 필드를 true
로 설정하세요. 그러면 요청이 실행되는 것처럼 완전히 검증되지만 최종 실행은 건너뜁니다. 오류가 발견되지 않으면 빈 응답이 반환됩니다. 검증에 실패하면 응답의 오류 메시지에 실패 지점이 표시됩니다.
validate_only
는 광고의 일반적인 정책 위반을 테스트하는 데 특히
유용합니다. 특정 단어, 구두점, 대문자, 길이 등을 사용하는 정책을 위반하는 광고는 자동으로 거부됩니다. 잘못된 단일 광고로 인해
전체 배치가 실패할 수 있습니다. validate_only
요청 내에서 새 광고를 테스트하면 이러한 위반을 발견할 수 있습니다. 정책 위반 오류 처리에 관한 코드 예를 참고하여 실제 예를 확인하세요.
객체 및 성능 통계 가져오기
GoogleAdsService
는 객체 및 성능 통계를 검색하는 단일 통합 서비스입니다.
GoogleAdsService
에 대한 모든 Search
및 SearchStream
요청에는 쿼리할 리소스, 검색할 리소스 속성 및 성능 측정항목, 요청 필터링에 사용할 조건자, 성능 통계를 세분화하는 데 사용할 세그먼트가 지정된 쿼리가 필요합니다. 쿼리 형식에 대한 자세한 내용은 Google Ads 쿼리 언어 가이드를 참조하세요.
메타데이터 검색
GoogleAdsFieldService
는 리소스에 사용할 수 있는 속성 및 해당 데이터 유형 등 Google Ads API의 리소스에 대한 메타데이터를 검색합니다.
이 서비스는 GoogleAdsService
에 쿼리를 구성하는 데 필요한 정보를 제공합니다. 편의를 위해 GoogleAdsFieldService
에서 반환된 정보는 필드 참조 문서에서도 확인할 수 있습니다.