GAS

【GAS】AdSense Management APIのv2を使ってデータを取得する

過去にAdSense Management APIを使ってGASからアドセンスのデータを取得する処理を作ったのだけど、AdSenseのAPIがv1.4からv2になった事によってエラーになって動かなくなっていた。

バージョンアップに伴いデータの渡し方とか戻り値とか色々と変わっているのが原因みたい。

なので公式ドキュメントを元に丸っと作り直してみたのでメモ…

ソースコード

/*
 * GoogleAdSenseの情報取得
 * 
 * @param {string} id - AdSenseパブリッシャーIDの数字
 * @param {string} start - データ取得開始日(2021/10/01)
 * @param {string} end - データ取得終了日(2021/10/31)
 * @returns {Array|Object} - スプシ書き出し用データ
 * 
 */
function getAdSenseData(id,start,end) {
  const adClientReportingDimensionId='ca-pub-'+id;
  const accountName="accounts/pub-"+id;
  const end_date = new Date(end);
  const start_date = new Date(start);
  const report = AdSense.Accounts.Reports.generate(accountName, {
    filters: ['AD_CLIENT_ID=='+adClientReportingDimensionId],
    metrics: ['PAGE_VIEWS', 'AD_REQUESTS', 'AD_REQUESTS_COVERAGE', 'CLICKS','AD_REQUESTS_CTR', 'COST_PER_CLICK', 'AD_REQUESTS_RPM','ESTIMATED_EARNINGS'],
    dimensions: ['DATE'],
    ...dateToJson('startDate', start_date),
    ...dateToJson('endDate', end_date),
    orderBy: ['+DATE']
  });
  //スプシ吐き出し用に整形
  let array =[[report.headers[0].name,report.headers.name,report.headers.name,report.headers.name,report.headers.name,report.headers[5].name,report.headers[6].name,report.headers[7].name,report.headers[8].name]];
  for (let i = 0; i < report.rows.length; i++) { 
    array.push([report.rows[i].cells[0].value,report.rows[i].cells.value,report.rows[i].cells.value,report.rows[i].cells.value,report.rows[i].cells.value,report.rows[i].cells[5].value,report.rows[i].cells[6].value,report.rows[i].cells[7].value,report.rows[i].cells[8].value]);
  }
  return array;
}
function dateToJson (paramName, value) {
  return {
    [paramName + '.year']: value.getFullYear(),
    [paramName + '.month']: value.getMonth() + 1,
    [paramName + '.day']: value.getDate()
  };
}

補足情報

AdSenseのパブリッシャーID確認方法

AdSenseページのアカウントから確認可能

ABOUT ME
ytakeuchi
都内在住のフロントエンドエンジニア。2016年からフリーランスとして活動中。座右の銘は「昨日よりも楽に」。好きな言葉は「効率化」。こんな性格なのでプライベートではGoogle Apps Scriptばかり触っています。