Googleアドセンスで収益が上がると毎日レポートを見るのが楽しみになりますよね。一日に何度も見てしまうかもしれません。
今回はそのレポートをLINEのボットで自動で送るようにさせよう!という手順を紹介する記事になります。
はじめに
レポートをLINEに送るようにするために、いくつかのちょっとだけ面倒な手順があるので軽く紹介したいと思います。
LINEのボット
LINEのボットを作るためには、まずはLINEのMessaging APIを使う必要があるので、LINEのデベロッパー用のアカウントを作成する必要があります。それについては以下の記事でまとめてはみたので参考にしてみてください。
Google Apps Script
今回はサーバ代わりに無料でスクリプトを定期実行ができるGoogle Apps Script(以下、GAS)を用いたいと思います。
GASってなんだろうって方には、以下のような記事を以前書いたことがあるのでちらっとだけ見ていただけると嬉しいです。
レポートの数値だけを送るLINEのボット
Google Adsenceのレポートを送るLINEのボットは以前も紹介したことがあります。
今回紹介するのはこの記事に近いようなものにはなりますが、グラフを画像化して投稿してくれるようになります。
グラフ化について
LINEのボットでグラフを投稿するというものは、以下の記事で紹介しております。
今回の記事でやること
上の文章だけで勘付いている方もいるかもしれませんが、上で紹介した記事でやっていることを組み合わせることで、Google AdsenceのレポートをLINEのボットでグラフ化して定期的に自動で通知するものを作成します。
各手順の説明は上で紹介した記事を読んでいただければ実現できるので、今回の記事ではスクリプトを軽く説明する程度で終わらせたいなと思います。
ボットを作ろう
ということで、今回の記事のメインです。 Googleドライブを開き、スプレッドシートを作成します。
また、その時のGoogleドライブのフォルダのIDをメモしておきましょう。GoogleドライブのIDというのは、Googleドライブのフォルダを開いたときのhttps://drive.google.com/drive/folders/[フォルダのID]のところがIDになります。
スプレッドシートからGASを開く方法については、以下の記事で紹介しております。
スクリプト
GASのエディタに以下のソースコードを入力します。
function main() { var folderId = 'XXXXXXXXXXXXXXXXXXXXXXXX' // Googleドライブの一時フォルダのID var to = 'XXXXXXXXXXXXXXXXXXXXXXX'; // LINEの送る先 var data = getGraphData(); var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange(1, 1, 8,5).setValues(data) var range = sheet.getDataRange(); var chart = sheet.newChart() .addRange(range) .setChartType(Charts.ChartType.LINE) .setOption('title', 'PVと見積もり収益(先週比較)') .build(); var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'YYYY-MM-dd'); var graphImg = chart.getBlob(); // グラフを画像に変換 var folder = DriveApp.getFolderById(folderId); var file = folder.createFile(graphImg) file.setName(today); // 公開設定する file.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT) pushImage(to, file.getDownloadUrl(),file.getDownloadUrl()) DriveApp.getFolderById(folderId).removeFile(file) } function getAdsenseData() { var now = new Date(); var startDate = Utilities.formatDate(new Date(now.getYear(), now.getMonth(),now.getDate() -14), 'Asia/Tokyo', 'yyyy-MM-dd'); var endDate = Utilities.formatDate(new Date(now.getYear(), now.getMonth(),now.getDate() -1), 'Asia/Tokyo', 'yyyy-MM-dd'); var report = AdSense.Reports.generate(startDate, endDate, { metric: ['PAGE_VIEWS', 'EARNINGS'], dimension: ['DATE'], sort: ['+DATE'] }).rows; return report; } function getGraphData() { var data = [['日付','PV','収益','先週のPV','先週の収益']]; var report = getAdsenseData(); for (var i = 0; i < 7; i++) { data.push([ report[i + 7][0], report[i + 7][1], report[i + 7][2], report[i][1], report[i][2] ]) } return data; } // line developersに書いてあるChannel Access Token var access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; /** * 指定のuser_idにpushをする */ function pushImage(to, src, srcPreview) { var url = "https://api.line.me/v2/bot/message/push"; var headers = { "Content-Type" : "application/json; charset=UTF-8", 'Authorization': 'Bearer ' + access_token, }; var postData = { "to" : to, "messages" : [ { 'type':'image', 'originalContentUrl':src, 'previewImageUrl':srcPreview, } ] }; var options = { "method" : "post", "headers" : headers, "payload" : JSON.stringify(postData) }; return UrlFetchApp.fetch(url, options); }
上記のXXXXにそれぞれ、GoogleドライブのIDやLINEの投稿先の部屋、LINEボットで投稿するためのトークンを貼り付けます。 (それぞれについては、面倒かもしれませんが、上で紹介している記事を御覧ください。) main関数を実行するようにすればテスト投稿ができます。
定期実行の設定をする
このプログラムを定期実行に登録します。定期実行の設定については以下の記事にまとめてあります。
今回の設定では、mainという関数を毎朝定期実行するように設定しています。
実行結果
上記の準備ができると、以下のような投稿がされるようになります。
先週分との比較ができるグラフを作成しています。 グラフにはPV数と見積もり収益額が表示されていて、また、先週のグラフも表示することで、前の一週間と比較することができるようになっています。
さいごに
今回はGoogle AdsenceのレポートをLINEにグラフ化して送ることを実現しました。 他にこういうものがほしい項目やレポートをLINEで送ってほしいなどがありましたらコメントなどを残していただけると実現しやすいなと思います。