非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

AdSense情報をGASを使ってLINE Botで受け取れるようにした

   

スマホでAdSenseアプリが消えてから手軽にAdSense収入を確認できなくなりました。

いちいちアカウントページに見に行くのも面倒なので、LINE Botで受け取れるようにしてみました。適当なテキストを送ると現時点の当日収益額と、昨日と当月トータルの収益額を返してくれるようにしました。↓こんな感じです。ソースコードを書き留めておきます。

 

 

ソースコードの前にAdSense収益額をLINE Botに乗せるまでの準備として以下の手順を踏みます。各リンクを参考にしてください。

  1. LINE Botを作るための準備(Messaging APIの登録)
  2. LINE Developersでチャネルアクセストークンを発行する方法
  3. LINE Bot開発:自動応答メッセージをOFFにする方法
  4. LINE BotをGoogle Apps Scriptで作ったら結構簡単だった
  5. Google Adsense情報をGoogle Apps Scriptで受け取る方法

上記のテクニックを使うことで今回のAdSense LINE Botを作ることができます。

それでは以下がソースコードとなります。

function getAdSenseData() {
  var dt = new Date(new Date().getFullYear(), new Date().getMonth(), 0);
  var startDate = Utilities.formatDate(dt, 'Asia/Tokyo', 'yyyy-MM-dd');

  var id = 'ca-pub-XXXXX' //自分のアドセンスID
  var endDate = 'today';

  var metrics = ['EARNINGS']
  var args = {
  'metric': metrics,
  'dimension': ['DATE'],
  'filter': ['AD_CLIENT_ID==' + id],
  'useTimezoneReporting': true, //ローカルタイムゾーン設定
  };
  var report = AdSense.Reports.generate(startDate, endDate, args).getRows();
  return report;
}

const TOKEN = '自分のチャンネルアクセストークン';

function doPost(e) {
  //AdSense情報GET
  report = getAdSenseData();
  var today = -1;
  var yesterday = -1;
  var total = 0;
  report.forEach(function(key){
    total+=Number(key[1]);
  });
  if(report.length>=2) yesterday = report[report.length-2][1];
  if(report.length>=1) today = report[report.length-1][1];
  var mess = "Today:" +today+ "\nYesterday:" +yesterday+ "\ntotal:" +new Intl.NumberFormat('ja-JP').format(total);


  const responseLine = e.postData.getDataAsString();
  const event = JSON.parse(responseLine).events[0];
  const replyToken = event.replyToken;
  //ユーザーIDを取得
  const userID = event.source.userId;
  //LINEのメッセージ形式にする
  const LineMessageObject = [{
    'type': 'text',
    'text': mess,
  }];
  const replyHeaders = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + TOKEN
  };
  const replyBody = {
    'replyToken': replyToken,
    'messages': LineMessageObject
  };
  const replyOptions = {
    'method': 'POST',
    'headers': replyHeaders,
    'payload': JSON.stringify(replyBody)
  };
  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyOptions);
}
 

 

 

スポンサーリンク

 - Google Apps Script, LINE Bot開発