Precios

Cómo crear una extensión de precios

function createPrice() {
  // For full details on creating a new price item, see:
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_priceitembuilder
  const priceItem1 = AdsApp.extensions().newPriceItemBuilder()
      // Replace the values below with your preferred header, description,
      // amount, currency code, unit type, final url, and mobile final url.
      .withHeader('header1')                        // required
      .withDescription('description1')              // required
      .withAmount(1000000)                          // required
      .withCurrencyCode('USD')                      // required
      // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',
      // or 'PER_NIGHT'
      .withUnitType('PER_DAY')                      // required
      .withFinalUrl('https://www.google.com')
      .withMobileFinalUrl('https://www.google.com') // required
      .build()
      .getResult();

  const priceItem2 = AdsApp.extensions().newPriceItemBuilder()
      // Replace the values below with your preferred header, description,
      // amount, currency code, unit type, final url, and mobile final url.
      .withHeader('header2')                        // required
      .withDescription('description2')              // required
      .withAmount(2000000)                          // required
      .withCurrencyCode('USD')                      // required
      // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',
      // or 'PER_NIGHT'
      .withUnitType('PER_HOUR')                     // required
      .withFinalUrl('https://www.google.com')       // required
      .withMobileFinalUrl('https://www.google.com') // required
      .build()
      .getResult();

  const priceItem3 = AdsApp.extensions().newPriceItemBuilder()
      // Replace the values below with your preferred header, description,
      // amount, currency code, unit type, final url, and mobile final url.
      .withHeader('header3')                        // required
      .withDescription('description3')              // required
      .withAmount(3000000)                          // required
      .withCurrencyCode('USD')                      // required
      // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',
      // or 'PER_NIGHT'
      .withUnitType('PER_WEEK')                     // required
      .withFinalUrl('https://www.google.com')       // required
      .withMobileFinalUrl('https://www.google.com') // required
      .build()
      .getResult();

  // For full details on creating a new price extension, see:
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_pricebuilder
  const newPrice = AdsApp.extensions().newPriceBuilder()
      // Replace the values below with your preferred price type, language
      // price qualifier, and tracking template
      .withPriceType('PRODUCT_CATEGORIES')                  // required
      .withLanguage('EN')                                   // required
      // Price qualifier must be one of: 'FROM', 'UP_TO', 'AVERAGE'
      .withPriceQualifier('UP_TO')                          // optional
      .withTrackingTemplate('http://www.example.com/track') // optional
      .addPriceItem(priceItem1)
      .addPriceItem(priceItem2)
      .addPriceItem(priceItem3)
      .build()
      .getResult();

  // Add price to a campaign
  const campaignIterator = AdsApp.campaigns()
      .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (campaignIterator.hasNext()) {
    const campaign = campaignIterator.next();
    campaign.addPrice(newPrice);
  }

  // Add price to an ad group
  const adGroupIterator = AdsApp.adGroups()
      .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')
      .withCondition('ad_group.name = "INSERT_AD_GROUP_NAME_HERE"')
      .get();
  if (adGroupIterator.hasNext()) {
    const adGroup = adGroupIterator.next();
    adGroup.addPrice(newPrice);
  }

  // Add price to an account
  const account = AdsApp.currentAccount();
  account.addPrice(newPrice);
}

Registrar detalles de precios para una campaña

function logPriceDetails() {
  // Get a campaign.
  const campaignIterator = AdsApp.campaigns()
      .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (!campaignIterator.hasNext()) {
    throw new Error('Campaign not found.');
  }
  const campaign = campaignIterator.next();

  // Retrieve the campaign's prices. Retrieving an ad group's and
  // account's pricess is similar.
  const priceIterator = campaign.extensions().prices().get();
  for (const price of priceIterator) {
    // You can also request reports for pre-defined date ranges. See
    // https://developers.google.com/adwords/api/docs/guides/awql,
    // DateRangeLiteral section for possible values.
    const stats = price.getStatsFor('LAST_MONTH');

    console.log(`Price extension price qualifier : ${ price.getPriceQualifier() }`);
    console.log(`Price extension price type : ${ price.getPriceType() }`);
    console.log(`mobile preferred : ${ price.isMobilePreferred() }`);
    console.log(`clicks : ${ stats.getClicks() }`);
    console.log(`impressions : ${ stats.getImpressions() }`);
    console.log('=======');
  }

  console.log(`${priceIterator.totalNumEntities()} prices in the campaign`);
}

Establecer la programación de precios para una campaña

function setPriceSchedule() {
  // Get a campaign.
  const campaignIterator = AdsApp.campaigns()
      .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (!campaignIterator.hasNext()) {
    throw new Error('Campaign not found.');
  }
  const campaign = campaignIterator.next();

  // Retrieve the campaign's prices. Retrieving an ad group's and
  // account's saitelinks is similar.
  const priceIterator = campaign.extensions().prices().get();

  for (const price of priceIterator) {
    if (price.getPriceType() == 'BRANDS') {
      // Set price extension schedule to run only on Mondays and Tuesdays,
      // 9 AM to 6 PM. You can follow a similar approach to set schedules for
      // other ad extension types.
      const monday = {
          dayOfWeek: 'MONDAY',
          startHour: 9,
          startMinute: 0,
          endHour: 18,
          endMinute: 0
      };

      const tuesday = {
          dayOfWeek: 'TUESDAY',
          startHour: 9,
          startMinute: 0,
          endHour: 18,
          endMinute: 0
      };

      price.setSchedules([monday, tuesday]);

      return;
    }
  }
}