Webinarデモ-コスト超過通知

※このソースコードは MIT License のもとで提供されています。
https://ads-developers.yahoo.co.jp/ja/ads-script/post/30418913.html

スクリプト内容:指定したコスト以上になったキャンペーンの一覧をスプレッドシートに出力し、メールで通知する

function main() {
  const SPREAD_SHEET_ID = 'SPREAD_SHEET_ID'; //★書き出すスプレッドシートID
  const SHEET_NAME = 'シート1';//★スプレッドシートのシート名
  const TARGET_COST = 100000;//★通知対象としたいコストの値を入力
  const CAMPAIGN_IDS = ['123456', '234567'];//★判定対象のキャンペーンIDを指定
  const MAIL_TO = ['abcde12345'];//★メール通知先のビジネスIDを指定
  const MAIL_TITLE = 'コスト超過キャンペーン通知';//★メールタイトルを指定
  const MAIL_HONBUN = '指定したコスト以上になっているキャンペーンがありました。対象はスプレッドシートをご確認ください。\n' +
    'https://docs.google.com/spreadsheets/d/' + SPREAD_SHEET_ID;//★メール本文を指定
  const accountId = AdsUtilities.getCurrentAccountId();
  //スプレッドシート
  const ss = SpreadsheetApp.openById(SPREAD_SHEET_ID);
  let sh = ss.getSheetByName(SHEET_NAME);
  sh.clear();//既存行をクリア
  //レポート取得
  const reportData = AdsUtilities.getSearchReport({
    accountId: accountId,
    fields: [
      'ACCOUNT_NAME', 'CAMPAIGN_ID', 'CAMPAIGN_NAME', 'IMPS', 'CLICKS', 'COST', 'CONVERSIONS'
    ],
    filters: [//フィルター
      {//指定したコスト
        field: 'COST',
        filterOperator: 'GREATER_THAN',
        values: [TARGET_COST]
      }, {//指定したキャンペーンID
        field: 'CAMPAIGN_ID',
        filterOperator: 'IN',
        values: CAMPAIGN_IDS
      }
    ],
    reportDateRangeType: 'YESTERDAY',
    reportType: 'CAMPAIGN',
    reportSkipColumnHeader: 'FALSE',
    sortFields: [//並び順
      {//コストの多い順
        field: "COST",
        reportSortType: "DESC"
      }
    ]
  }).reports[0].rows;
  //スプレッドシートに出力
  sh.getRange('A1').setValues(reportData);
  if (reportData.length > 1) {//ヘッダ以外の行がある場合のみ
    //メール通知
    MailApp.sendEmail({
      to: MAIL_TO,
      subject: MAIL_TITLE,
      body: MAIL_HONBUN
    });
  }
}