애드워즈 계정과 판매자 센터 하위 계정 생성 및 연결하기

1. 소개

이 Codelab에서는 Content API for ShoppingAdWords API를 사용하기 위한 기본사항을 알아보고 두 가지를 모두 사용하는 애플리케이션을 빌드합니다. 특히 애드워즈 계정과 판매자 센터 계정을 만들고 연결하는 명령줄 애플리케이션을 만듭니다.

학습할 내용

  • 관리자 계정에서 관리하는 애드워즈 계정을 만드는 방법
  • 멀티 클라이언트 계정에서 관리하는 판매자 센터 계정을 만드는 방법
  • 판매자 센터 계정과 애드워즈 계정의 연결을 요청하는 방법
  • 애드워즈 계정에서 대기 중인 판매자 센터 연결을 수락하는 방법

필요한 항목

2. 설정

코드 다운로드

다음 링크를 클릭하면 이 Codelab의 모든 코드를 다운로드할 수 있습니다.

다운로드한 ZIP 파일의 압축을 해제합니다. 이렇게 하면 Maven 프로젝트와 필요한 모든 리소스가 포함된 루트 폴더 (shopping-account-linking-master)의 압축이 해제됩니다. 다음 하위 디렉터리는 특히 중요합니다.

  • src/main/java는 Maven 프로젝트의 소스 루트이며 작업할 코드 스켈레톤을 포함합니다.
  • src/main/java/solution에는 완성된 솔루션이 포함됩니다.

필수 패키지 및 빌드 설치

Eclipse 또는 IntelliJ와 같은 Maven 인식 IDE를 사용하는 경우 추출된 폴더를 Maven 프로젝트로 가져온 다음 프로젝트를 정상적으로 컴파일할 수 있습니다.

명령줄에서 Maven을 사용하는 경우 다음 명령어를 실행하여 필요한 패키지를 검색하고 압축을 푼 프로젝트 (shopping-account-linking-master)의 루트 폴더에서 프로젝트를 컴파일할 수 있습니다.

mvn compile

3. 인증 설정

이 단계에서는 코딩을 하지 않고 AdWords API 및 Content API for Shopping을 위한 적절한 인증 토큰이 포함된 파일을 설정합니다.

애드워즈 API 인증 설정

이 Codelab에서는 클라이언트 라이브러리와 동일한 사용자 인증 정보 로드를 사용하므로 관리자 계정에서 Java용 Google Ads API 클라이언트 라이브러리를 이미 사용한 경우 설정이 완료된 것입니다. 그렇지 않으면 1~3단계에 따라 Java용 Google Ads API 클라이언트 라이브러리 시작하기를 참조하세요.

Content API 인증 설정

아직 서비스 계정 키가 없는 경우:

  1. 멀티 클라이언트 계정의 판매자 센터로 이동하여 더보기 메뉴에서 Content API를 선택합니다. 89507d635c51a3dc.png
  2. 인증을 선택한 후 파란색 + 버튼을 클릭합니다. c465d8dc314ec158.png
  3. Google Cloud Platform 및 Google API 서비스 약관에 동의하면 브라우저에서 새 서비스 계정 키가 포함된 JSON 파일이 자동으로 다운로드됩니다.

이제 서비스 계정을 사용하여 쇼핑 샘플의 인증 설정 안내를 따릅니다. 즉, 서비스 계정 키 사본이 홈 디렉터리의 shopping-samples/content/service-account.json 경로에 있어야 합니다. 이 Codelab을 완료한 후 샘플을 사용해 보는 데 관심이 없다면 샘플 구성을 설정할 필요가 없습니다.

테스트하기

이제 인증 토큰이 올바른 위치에 있으므로 샘플을 실행해 봅니다. 명령줄에서 Maven을 사용하는 경우 다음 명령어를 실행합니다.

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

세션 객체가 제공되지 않는다는 오류 메시지가 표시되면 인증 토큰이 있는 것이고 올바르게 작동하는 것입니다. 그렇지 않으면 오류 메시지에 실패한 사용자 인증 정보와 수정해야 할 파일이 표시됩니다.

4. API에 연결

사용할 두 API에 대한 유효한 인증 토큰이 있으므로 이제 실제 코드를 작성해 보겠습니다. 먼저 인증 토큰을 사용하여 세션 객체를 만들어 보겠습니다. 이후 단계에서는 이러한 세션 객체를 사용하여 각 API가 제공하는 다양한 서비스와 메서드에 액세스합니다.

Content API 세션 객체 만들기

Content API 세션을 만들려면 ShoppingContent.Builder 객체를 구성한 다음 이를 사용하여 적절한 ShoppingContent 객체를 빌드합니다. 다행히 전자를 구성하는 데 필요한 것은 이미 코드 스켈레톤에서 사용할 수 있으므로 다음과 같이 풀기만 하면 됩니다.

SolutionRunner.java

// TODO(sessions): Create a ShoppingContent object using ShoppingContent.Builder.
contentApiSession =
    new ShoppingContent.Builder(httpTransport, jsonFactory, contentApiCredential)
        .setApplicationName("Linking AdWords and Merchant Center Accounts Codelab")
        .build();

애플리케이션 이름 설정이 꼭 필요하지는 않지만 build() 메서드를 호출하기 전에 ShoppingContent.Builder 객체를 통해 원하는 옵션을 설정하는 방법을 보여줍니다.

애드워즈 API 세션 객체 만들기

마찬가지로 AdWordsSession 객체를 빌드하기 위한 AdWordsSession.Builder 클래스도 있습니다. 여기서 주요 차이점은 빌더에서 직접 구성 옵션을 설정하는 대신 fromFile() 메서드를 사용하여 이전 단계에서 설정한 ads.properties 파일에서 구성 옵션을 로드한다는 것입니다.

SolutionRunner.java

// TODO(sessions): Create a AdWordsSession object using AdWordsSession.Builder.
adWordsSession =
    new AdWordsSession.Builder()
        .fromFile()
        .withOAuth2Credential(adwordsOAuth2Credential)
        .build();

테스트하기

명령줄에서 Maven 프로젝트를 실행하는 경우 이전 섹션과 동일한 명령어를 사용하여 Maven 프로젝트를 다시 빌드하고 실행합니다.

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

이번에는 오류가 발생하지 않지만 흥미로운 출력은 표시되지 않습니다. API를 호출하여 새 계정을 만들고 연결할 때 이 정보를 추가합니다.

5. 새 관리 애드워즈 계정 만들기

API 세션 객체를 만들었으므로 이제 연결할 계정을 만들어 보겠습니다. 먼저 애드워즈로 이동하여 관리자 계정에서 테스트 계정을 만들어 보겠습니다.

ManagedCustomerService에 액세스

AdWords API에서는 먼저 정적 getInstance() 메서드를 사용해 AdWordsServices 클래스의 인스턴스를 검색하여 사용 가능한 다양한 서비스에 액세스합니다. 그런 다음 이 인스턴스를 사용하여 get() 메서드를 통해 이러한 서비스의 클라이언트를 만들 수 있습니다. 이 메서드는 클라이언트를 만들 세션과 원하는 서비스를 위한 인터페이스라는 두 가지 인수를 사용합니다.

SolutionRunner.java

// TODO(newAWaccount): Using the ManagedCustomerService, create a new testing AdWords account
// under the given manager account.

AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();

ManagedCustomerServiceInterface managedCustomerService =
    adWordsServices.get(adWordsSession, ManagedCustomerServiceInterface.class);

여기에서는 ManagedCustomerService에 액세스하여 애드워즈 '고객'을 관리할 수 있습니다. (계정)을 만들 수 있습니다.

새 계정 설정 지정하기

먼저 새 계정의 설정이 포함된 ManagedCustomer 객체를 만듭니다. 이 Codelab의 테스트 계정을 만들어 통화를 USD로 설정하고 시간대를 미국 서부 해안과 동일하게 설정합니다.

SolutionRunner.java

Random rand = new Random();
long run = rand.nextLong();

ManagedCustomer newAdWordsAccount = new ManagedCustomer();
newAdWordsAccount.setName(String.format("AdWords Account Created by Run %d", run));
newAdWordsAccount.setTestAccount(true);
newAdWordsAccount.setCurrencyCode("USD");
newAdWordsAccount.setDateTimeZone("America/Los_Angeles");

또한 Google에서는 계정 이름에 포함하는 임의의 숫자를 생성합니다. 이는 여기서 만들 애드워즈 계정과 나중에 만들 판매자 센터 계정을 일치시키기 위한 것이므로 솔루션이 완료된 후 두 계정을 시각적으로 검사하고 두 계정이 연결되었는지 확인할 수 있습니다.

새 관리 계정 만들기

실제로 새 계정을 만들기 위해 ManagedCustomerOperation을 사용하여 ADD 작업을 지정합니다.

SolutionRunner.java

ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(newAdWordsAccount);
operation.setOperator(Operator.ADD);

그런 다음 ManagedCustomerService 객체의 mutate() 메서드를 사용하여 작업을 실행합니다. 이 메서드는 수행할 작업의 배열을 취하지만 여기서는 단일 작업만 실행합니다. mutate() 메서드의 결과는 ManagedCustomer 목록이 포함된 값입니다. 여기에 새 계정이라는 고객 한 명이 포함된 목록이 표시됩니다. 나중에 사용할 수 있도록 새 계정의 ID를 검색하고 출력하여 솔루션 출력의 일부로 확인할 수 있도록 합니다.

SolutionRunner.java

ManagedCustomerReturnValue result =
    managedCustomerService.mutate(new ManagedCustomerOperation[] {operation});
Long adWordsId = result.getValue()[0].getCustomerId();
System.out.printf("Created new AdWords account %d%n", adWordsId);

테스트하기

이전과 마찬가지로 솔루션을 실행해 봅니다. 명령줄에서 Maven을 사용하는 경우:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

아무 문제 없이 정상적으로 작동하면 오류 없이 새로 만든 애드워즈 계정 ID가 표시됩니다. AdWords 사이트에서 관리자 계정을 확인하면 새 계정도 표시된 것을 볼 수 있습니다.

6. 새 판매자 센터 하위 계정 만들기

이 단계에서는 이전 단계에서 만든 애드워즈 계정에 연결할 판매자 센터 하위 계정을 만듭니다. 하위 계정을 만든 후에 별도로 연결을 요청하는 대신, 해당 애드워즈 계정의 ID가 이미 있으므로 계정을 만드는 과정에서 연결을 요청할 수 있습니다.

새 하위 계정의 설정 지정하기

애드워즈 API와 달리 Account 모델 클래스의 setter는 객체를 반환하므로 새 Account 객체에서 이 setter에 대한 호출을 연결할 수 있습니다. Google은 애드워즈 계정을 만드는 동안 생성한 임의의 숫자를 새 판매자 센터 계정의 이름에도 사용합니다.

SolutionRunner.java

Account newMcAccount = new Account()
    .setName(String.format("Merchant Center Account Created by Run %d", run))
    .setAdwordsLinks(
        ImmutableList.of(
            new AccountAdwordsLink()
                .setAdwordsId(BigInteger.valueOf(adWordsId))
                .setStatus("active")));

이 단계의 소개에서 언급했듯이 새 관리 계정의 애드워즈 ID가 이미 있으므로 이 ID를 새 하위 계정의 AdwordsLinks 목록에 추가할 수 있습니다. 새 하위 계정이 생성되면 이 연결이 자동으로 요청되어 애드워즈 API에서 사용할 수 있습니다.

새 하위 계정 만들기

Content API에서 세션 객체의 accounts() 메서드를 호출하여 Accounts 서비스에 액세스한 다음 작업 객체를 설정하는 대신 insert() 메서드를 직접 호출합니다. 이 메서드는 두 가지 인수를 사용합니다. 하나는 새 하위 계정을 만들 멀티 클라이언트 계정의 ID이고 다른 하나는 원하는 설정을 포함하는 Account 객체입니다.

SolutionRunner.java

newMcAccount = contentApiSession.accounts().insert(mcaId, newMcAccount).execute();

System.out.printf("Created new Merchant Center account %s%n", newMcAccount.getId());

insert() 메서드는 새 하위 계정의 설정이 포함된 Account 객체를 반환합니다. 반환된 버전에는 중요한 정보인 새 하위 계정의 ID가 포함되어 있으므로 원래 Account 객체를 덮어씁니다. 솔루션을 솔루션의 출력에 출력하여 솔루션을 실행한 다음 새 하위 계정이 판매자 센터에 있는지 확인합니다.

테스트하기

이전과 마찬가지로 솔루션을 실행해 봅니다. 명령줄에서 Maven을 사용하는 경우:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

아무 문제가 없으면 오류가 표시되지 않으며 이번에는 새 애드워즈 계정과 새 판매자 센터 계정의 ID가 모두 표시됩니다. 멀티 클라이언트 계정의 판매자 센터에서 새 하위 계정을 확인합니다.

7. 애드워즈 계정에서 링크 수락

이전 단계에서 새 판매자 센터 하위 계정을 만들어 동시에 새 애드워즈 계정에 대한 연결을 요청했습니다. 이 단계에서는 애드워즈 API를 사용하여 요청된 연결을 수락하는 과정을 완료합니다.

CustomerService에 액세스

이전과 마찬가지로 AdWordsServices 클래스를 사용하여 CustomerService의 클라이언트를 가져옵니다. 그러나 클라이언트를 만들기 전에 먼저 애드워즈 세션 객체를 변경하여 향후 사용자가 관리자 계정이 아닌 새 관리 계정에서 작동하도록 해야 합니다. 결국 판매자 센터 계정에서 관리자 계정이 아닌 관리 계정에 대한 연결을 요청했습니다.

SolutionRunner.java

// TODO(acceptLink): Using the mutateServiceLinks method in CustomerService, accept the
// proposed link between the new AdWords account and the new Merchant Center account.

adWordsSession.setClientCustomerId(adWordsId.toString());

CustomerServiceInterface customerService =
    adWordsServices.get(adWordsSession, CustomerServiceInterface.class);

새 애드워즈 계정을 만들 때와 마찬가지로 연결 설정을 포함하는 ServiceLink 객체를 만든 다음 원하는 작업을 설명하는 ServiceLinkOperation 객체를 만듭니다. 여기서는 대기 중인 서비스 링크를 MERCHANT_CENTER 계정으로 가져와서 ACTIVESET하려고 합니다. serviceLinkId 설정에서는 방금 만든 판매자 센터 계정의 ID를 사용합니다. 이 ID가 Google Ads의 서비스 링크 ID에 사용되기 때문입니다.

SolutionRunner.java

ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(newMcAccount.getId().longValue());
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);

ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
op.setOperand(serviceLink);

마지막으로 CustomerService 객체의 mutateServiceLinks() 메서드를 호출하여 작업을 실행합니다. 이전과 마찬가지로 서비스 링크 작업의 배열을 사용합니다. 이번에는 (변경되었을 수 있는) 서비스 링크의 목록을 직접 반환하므로, 이 목록을 루프 처리하여 솔루션의 결과를 출력하겠습니다. 물론 여기서는 단일 작업만 지정했으므로 출력에 단일 링크만 출력될 것으로 예상합니다.

SolutionRunner.java

ServiceLink[] mutatedServiceLinks =
    customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
  System.out.printf(
      "Service link with service link ID %d, type '%s' updated to status: %s.%n",
      mutatedServiceLink.getServiceLinkId(),
      mutatedServiceLink.getServiceType(),
      mutatedServiceLink.getLinkStatus());
}

테스트하기

이전과 마찬가지로 솔루션을 실행해 봅니다. 명령줄에서 Maven을 사용하는 경우:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

모든 것이 잘 진행되어도 오류가 표시되지 않을 것이며, 이번에는 서비스 링크가 활성 상태로 업데이트되었다는 메시지도 표시됩니다. AdWords판매자 센터를 확인하고 계정이 실제로 연결되었는지 다시 확인합니다.

8. 특정 테마의 변형

축하합니다. Codelab을 완료했습니다. 이제 완전히 작동하는 솔루션을 만들었으므로 이 Codelab에서 확인한 API를 더 많이 사용하기 위해 솔루션을 수정하거나 확장하는 방법에 관한 몇 가지 예를 살펴보겠습니다.

이 Codelab에서는 판매자 센터 계정을 만들 때 계정 정보를 사용하여 연결을 요청할 수 있도록 먼저 애드워즈 계정을 스마트하게 만들었습니다. 하지만 판매자 센터 계정이 이미 있는 경우에는 대신 구성을 업데이트해야 합니다. 코드를 변경하여 판매자 센터 계정을 먼저 만든 다음 애드워즈 계정을 만든 후에 돌아가서 연결을 요청하도록 구성을 업데이트해 보세요.

현재 애플리케이션은 API 호출에 오류가 없음을 성공의 신호로만 처리합니다. 예시를 확장하여 새 판매자 센터 및 Google Ads 계정의 링크 정보를 확인하고 링크가 실제로 활성 상태인지 확인해 보세요.

전 세계에서 가장 맛있는 음식

다른 변경사항이 있다면 시도해 보세요. 아이디어를 위한 참조 코드가 필요한 경우 Google Ads 자바 클라이언트 라이브러리 소스에서 Google 쇼핑 샘플examples 디렉터리를 확인하세요.