캠페인 초안 및 실험

Google Ads 스크립트는 검색 네트워크 및 디스플레이 네트워크 캠페인의 변경사항을 준비하고 테스트하는 데 사용되는 임시 캠페인 및 실험을 지원합니다.

초안은 자체 광고를 게재하지 않지만 원래 캠페인을 수정하지 않고도 변경사항을 스테이징하는 데 사용할 수 있는 기존 캠페인의 복제본입니다. 그런 다음 스테이징된 변경사항을 기본 캠페인에 적용할 수 있습니다.

실험은 기존 캠페인과 동시에 맞춤설정 가능한 캠페인을 실행하고 지정된 비율의 트래픽에만 광고를 게재합니다. 실험 결과에 따라 변경사항을 기존 캠페인에 적용하거나, 실험을 독립 캠페인으로 브랜치하거나, 실험 캠페인을 중단할 수 있습니다.

이 가이드에서는 스크립트에서 초안 및 실험을 사용하는 기본 워크플로를 설명합니다.

초안

임시 캠페인 만들기

DraftBuilder를 사용하고 고유한 이름을 제공하여 기존 기본 캠페인에서 초안을 만듭니다. 기본 캠페인은 검색, 디스플레이 네트워크 게재가 가능한 검색 네트워크 캠페인 또는 디스플레이 캠페인(디스플레이 네트워크용 모바일 앱 캠페인 제외)이어야 하며 공유 예산이 없어야 합니다.

const campaign = AdsApp.campaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get()
    .next();

const draftBuilder = campaign.newDraftBuilder()
    .withName("INSERT_DRAFT_NAME_HERE")
    .build();

const draft = draftBuilder.getResult();

DraftBuilder.build()는 스크립트의 일반적인 작업인 DraftOperation를 반환합니다. 자세한 내용은 빌더 가이드를 참고하세요.

draft는 기본 캠페인 ID와 초안 ID 조합으로 고유하게 식별됩니다. 자세한 내용은 DraftSelector.withIds()를 참조하세요.

임시 캠페인 프로비저닝

draft 객체는 기본 캠페인과 초안 캠페인을 연결합니다. 기본 캠페인에 업데이트를 스테이징하려면 임시 캠페인을 통해 변경사항을 전파합니다.

다른 캠페인과 마찬가지로 초안 캠페인에는 기준, 광고 그룹, 입찰가, 광고와 같은 다양한 속성을 가져오고 설정하는 메서드가 있습니다.

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

광고 정책 검토는 기본 캠페인과 마찬가지로 초안 캠페인에도 적용됩니다. 정책을 위반하는 광고가 포함된 임시 캠페인에서는 실험을 실행할 수 없습니다.

초안 실행

캠페인 초안을 프로비저닝한 후 다음 중 하나를 수행할 수 있습니다.

  1. 변경사항을 사용하지 않으려면 초안을 삭제하면 됩니다. 초안을 삭제하면 되돌릴 수 없지만 Google Ads UI의 초안 탭에 있는 모든 초안에서 계속 볼 수 있습니다.

    draft.remove();
    
  2. 초안에서 적용한 변경사항을 유지하려면 다음 단계를 따르세요.

    draft.startApplying();
    

    이 방법은 기본 캠페인에 업데이트를 적용하는 프로세스를 시작합니다. 따라서 Google Ads UI에서 초안의 상태는 Applying...(적용 중)입니다. 그러나 이 메서드는 프로세스가 완료될 때 알림을 보내지 않습니다.

  3. 변경사항을 먼저 테스트하려면 초안을 사용하여 실험을 만들 수 있습니다.

실험

실험 만들기

experiment는 초안과 유사하며 기본 캠페인에서 생성됩니다. ExperimentBuilderexperiment를 만듭니다. 이렇게 하면 실험의 서로 다른 부분을 나타내는 두 개의 '부문'으로 구성된 실험이 자동으로 생성됩니다. 한 부문(대조 부문이라고 함)에는 기본 캠페인이 포함되고 다른 부문(전체 실험 대상 부문이라고 함)에는 실험을 예약하기 전에 위의 초안 단계에 따라 맞춤설정할 새 초안 캠페인이 포함됩니다.

실험을 빌드할 때는 빌더에서 다음을 모두 설정해야 합니다.

withCampaign
실험의 기반이 되는 캠페인입니다.
withTrafficSplitPercent
실험 부문으로 이동하는 트래픽의 양입니다. 50%의 경우 50를 지정합니다.
withStartDatewithEndDate
캠페인의 시작일과 종료일을 지정합니다. YYYYMMdd 형식으로 지정합니다.
withType
사용 중인 네트워크에 따라 SEARCH_CUSTOM 또는 DISPLAY_CUSTOM입니다.
withSuffix
실험 캠페인을 만들 때 실험 캠페인 이름에 추가할 접미사를 지정합니다.
withGoals
이 실험의 목표를 지정합니다. 이는 목표를 만들 때의 목표를 상기하기 위한 것입니다. 적절한 기본값은 [{metric: 'CLICKS', direction: 'INCREASE'}]입니다.

트래픽 분할 비율에 따라 기본 캠페인 대신 실험 캠페인의 광고가 게재될 트래픽의 비율이 결정됩니다. 따라서 각 기본 캠페인에는 한 번에 하나의 실험만 실행할 수 있습니다.

const experiment = AdsApp.newExperimentBuilder()
  .withCampaign(campaign)
  .withTrafficSplitPercent(50)
  .withStartDate("20230501")
  .withEndDate("20230601")
  .withType("SEARCH_CUSTOM")
  .withSuffix("experiment")
  .withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
  .build();

// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();

실험은 초안과 달리 단일 ID로 고유하게 식별됩니다. 자세한 내용은 ExperimentSelector.withIds()을 참조하세요.

실험 캠페인 프로비저닝

draft와 마찬가지로 experiment 자체는 캠페인이 아닙니다. 대신 기본 캠페인, 임시 캠페인, 실험 캠페인을 연결합니다. 실험 캠페인의 필드는 다음과 같은 예외를 제외하고 수정할 수 있습니다.

  • 이름
  • 상태
  • 시작일
  • 종료일
  • budget
const experimentCampaign = experiment.getExperimentCampaign();

// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");

// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");

실험에 이름, 시작일, 종료일을 변경할 수 있으며 변경된 후에는 실험 캠페인에 적용됩니다.

// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");

// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);

실험을 시작하려면 experiment.startScheduling()를 호출합니다. 이 프로세스는 기본 캠페인의 모든 설정을 복사해야 하므로 비동기 프로세스입니다.

실험 종료 후

실험이 완료되면 몇 가지 옵션이 있습니다. 실험을 완전히 종료하면 광고 게재가 중단되지만 실험과 상호작용할 수 있습니다. 완료됨 실험은 계속 삭제, 적용, 승격할 수 있으며 캠페인의 실적 통계에도 계속 액세스할 수 있습니다.

experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
  • 통계를 기반으로 실험에 만족하지 않는다면 실험을 삭제할 수 있으며 이 경우 실험 캠페인도 삭제됩니다. 실험을 삭제한 후에는 되돌릴 수 없지만 Google Ads UI의 실험 탭에 있는 모든 실험에서 실험을 계속 볼 수 있습니다.

    experiment.remove();
    
  • 실험 결과가 만족스러우면 다음 두 가지 옵션 중 하나를 선택할 수 있습니다.

    1. 변경사항 적용을 시작할 수 있으며 초안과 마찬가지로 프로세스가 완료되면 알림이 전송되지 않습니다.

      experiment.startApplying();
      
    2. 실험 캠페인을 기본 캠페인에 영향을 주지 않으면서 완전히 작동하는 독립적인 캠페인으로 설정할 수 있습니다. 이 프로세스는 진행 중이라고 하며 즉시 완료되며 새 예산을 설정해야 합니다.

      const budget = AdsApp.budgets()
          .withCondition(`campaign_budget.id = ${budgetId}`)
          .get()
          .next();
      
      experiment.graduate(budget);
      

      새 캠페인은 더 이상 기본 캠페인과 예산을 공유할 수 없으므로 새 예산이 필요합니다. 승격된 캠페인은 모든 입력란을 수정할 수 있고 더 많은 초안 및 실험의 기본 캠페인으로 사용할 수 있다는 점에서 일반 캠페인과 같습니다.

기타 고려사항

기본 항목

Google Ads 스크립트에 임시 캠페인 및 실험이 도입되면서 기본 항목 개념도 도입되었습니다. 초안 및 실험 캠페인과 그 캠페인의 광고 그룹은 원래 기본 캠페인과 다릅니다. 이 때문에 이제 CampaignAdGroup에 기본 캠페인 및 광고 그룹에 액세스하는 메서드인 getBaseCampaign()getBaseAdGroup()가 있습니다.

이러한 메서드는 기본 캠페인 또는 광고 그룹에서 호출하면 호출 항목을 반환합니다. 키워드 및 광고와 같은 캠페인 및 광고 그룹 내 항목에도 이러한 메서드가 제공되었습니다.

기본 항목을 추적하는 데 도움이 되도록 캠페인에 isBaseCampaign(), isDraftCampaign(), isExperimentCampaign() 메서드가 제공되었습니다.

Campaign.draftCampaigns()Campaign.experimentCampaigns() 메서드를 사용하면 호출 캠페인을 기본 캠페인으로 사용하는 모든 초안 및 실험 캠페인에 액세스할 수 있습니다. 하지만 CampaignSelector.withCondition()로는 캠페인 초안을 선택할 수 없습니다. 대신 AdsApp.drafts()를 사용하세요.

오류 처리

스크립트가 실행될 때 초안 및 실험과 관련된 다음 메서드는 진행되지만 비동기식으로 실패할 수 있습니다.

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

이러한 작업이 성공했는지 확인하려면 기다려야 합니다. Google Ads UI에는 startApplying()startScheduling()가 각각 성공적으로 완료되면 적용됨 또는 활성 상태가 표시됩니다. 또한 실패하면 Unable to apply(적용할 수 없음) 또는 Unable to create(만들 수 없음)를 표시하여 클릭하면 오류를 확인할 수 있습니다.

일부 메서드는 미리보기 단계에서 실패하더라도 실행 후에 성공할 수 있습니다. 예를 들어 초안을 만든 후에 성공할 수도 있습니다.

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

초안 캠페인에 즉시 액세스할 수 없으므로 미리보기 모드에서는 실패합니다.

마찬가지로 실험을 만들고 즉시 초안 캠페인을 가져오려고 하면 미리보기 모드에서 실패합니다. 초안이 실제로 생성되지 않았기 때문입니다.

따라서, 스크립트 실행 후 스크립트 목록 아래에 있는 로그를 확인하고, 미리보기 모드의 제한으로 인해 발생한 원인이라고 판단되는 경우에만 미리보기에서 실패한 스크립트로 진행해야 합니다.