Drafts and Experiments

  • This script provides functions for managing Google Ads drafts and experiments, including creating, retrieving, and interacting with them.

  • createDraft function enables the creation of a new draft campaign from an existing campaign using their respective names.

  • getDrafts function retrieves and displays either all existing drafts or a specific draft based on its name.

  • createExperiment function initiates a new experiment based on a selected draft, assigning it a name and traffic split percentage.

  • getExperiments function lists all available experiments or a specific one using its name, aiding in experiment monitoring and management.

Create a draft Search or Display campaign

function createDraft(campaignName, newDraftName) {
  const campaign = AdsApp.campaigns()
      .withCondition(`campaign.name = '${campaignName}'`)
      .get()
      .next();

  var draftBuilder = campaign.newDraftBuilder()
      .withName(newDraftName)
      .build();

  var draft = draftBuilder.getResult();
}

Get draft campaigns

function getDrafts() {
  // Get all drafts.
  const drafts = AdsApp.drafts().get();

  console.log(drafts.totalNumEntities());

  for (const draft of drafts) {
    console.log("Draft: " + draft.getName());
  }

  // Get a specific draft.
  const campaignIterator = AdsApp.drafts()
      .withCondition("campaign_draft.name = 'INSERT_DRAFT_NAME'")
      .get();

  for (const campaign of campaignIterator) {
    console.log(campaign.getName());
  }
}

Create an experiment

function createExperiment(draftName, newExperimentName) {
  const draft = AdsApp.drafts()
      .withCondition(`campaign_draft.name = '${draftName}'`)
      .get()
      .next();

  var experimentBuilder = draft.newExperimentBuilder();

  experimentBuilder.withName(newExperimentName)
      .withTrafficSplitPercent(50)
      .startBuilding();
}

Get experiments

function getExperiments() {
  // Get all experiments.
  var exps = AdsApp.experiments().get();

  console.log(exps.totalNumEntities());

  while (exps.hasNext()) {
    var exp = exps.next();
    console.log("Experiment: " + exp.getName());
  }

  // Get specific experiment.
  var campaignIterator = AdsApp.experiments()
      .withCondition("Name = 'INSERT_EXPERIMENT_NAME'")
      .get();

  while (campaignIterator.hasNext()) {
    console.log(campaignIterator.next().getName());
  }
}