インターネット収益を自動で集計したい
毎日、広告収益が上がってきます。
その数値をいちいちサイトにアクセスしていては大変です。
自動で収益を記録しましょう。
本サイトでのグラフはAdSense規約に乗っ取り、ページビューや収益の具体的数値は除いて掲載しています。
値の公表はポリシー違反になりますので、ご了承ください。
さっそくですが完成体
最終目標はこのようなグラフを自動生成して、サイト別の収益率の計測に使います。
その日のクリック単価や収益を計測することができます。
これを追っていれば、ブログの収益率をトレースができます。
詳細な値などは今回は非掲載です。
下準備はAdSenseManagementAPIをオンにする
GASのAPIのうち、プログラムからAdSenseを利用するライブラリをオンにしてください。
ここは詳しくは解説したいのでリンクを貼っておきます。
note.com
引用:
https://note.com/mangapostjapan/n/n96223145a99d
コード解説
function myFunction(){ //昨日の日の収益を移動 // 現在アクティブなシートを取得 var sheet = SpreadsheetApp.openById(ご自身のスプレッドシートID); //先日のAdSenseデータの移動 sheet.getRange("A2:J1000").moveTo(sheet.getRange("A3")); // 今日の日付を格納 var date = new Date(); Logger.log(Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy-MM-dd')); var today = Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy-MM-dd')-2; sheet.getRange("A2").setValue(today); //一週間前を取得 var date = new Date(); //現在日時のDateオブジェクトを作る var today = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); //現在の「日」を取得 var day = date.getDate(); Logger.log(day); //5 //前日日付にしたいので-1する date.setDate(day-7); Logger.log(date); //Wed Sep 04 19:33:33 GMT+09:00 2019 //日付の表示形式を整形する var lastweek = Utilities.formatDate(date, 'JST', 'yyyy-MM-dd'); Logger.log(lastweek); //2019/09/04 var adClientId = 'ca-pub-自身のID'; var startDate = lastweek; var endDate = today; var metrics = ['PAGE_VIEWS', 'CLICKS', 'PAGE_VIEWS_CTR', 'COST_PER_CLICK', 'PAGE_VIEWS_RPM','EARNINGS']; var args = {'metric': metrics, 'dimension': ['WEEK'], 'filter': ['AD_CLIENT_ID==' + adClientId], }; var report = AdSense.Reports.generate(startDate, endDate, args).getRows(); Logger.log(report[1]); Logger.log(report[1][1]); sheet.getRange("A2").setValue(report[1][0]); sheet.getRange("B2").setValue(report[1][1]); sheet.getRange("C2").setValue(report[1][2]); sheet.getRange("D2").setValue(report[1][3]); sheet.getRange("E2").setValue(report[1][4]); sheet.getRange("F2").setValue(report[1][5]); sheet.getRange("G2").setValue(report[1][6]); //pv取得 var pv =sheet.getRange("B2"); var pv2 = pv.getValue(); //クリック数取得 var click =sheet.getRange("C2"); var click2 = click.getValue(); //CTR取得 var ctr =sheet.getRange("D2"); var ctr2 = ctr.getValue();+"\nCTR:"+ctr2 //CPC取得 var cpc =sheet.getRange("E2"); var cpc2 = ctr.getValue(); //RPM取得 var rpm =sheet.getRange("F2"); var rpm2 = ctr.getValue(); //収益取得 var earn =sheet.getRange("G2"); var earn2 = ctr.getValue(); //総収益 var all =sheet.getRange("J1"); var all2 = ctr.getValue(); var messageText = "\n"+today+"\nPV数:"+pv2+"\nクリック数:"+click2+"\nCPC:"+cpc2+"\nRPM:"+rpm2+"\nEARN:"+earn2+"\n\n総収益"+all2; // LINEから取得したトークン let token = "QpjE3wuAyu0uuGHB5LLfoxBcb5nET9GlYhe4JrlVTWY" let options = { "method" : "post", "headers" : { "Authorization" : "Bearer "+ token }, "payload" : { "message" : messageText } } const FValues = sheet.getRange('A:A').getValues(); //A列の値を全て取得 var lastrow = FValues.filter(String).length; //空白の要素を除いた長さを取得 let url = "https://notify-api.line.me/api/notify" if(sheet.getRange("C"+lastrow).getValue() !== ""){ UrlFetchApp.fetch(url, options) } }
このコードで完動します。
約60行ほどのコードですが、収益の記録を行ってくれるコードになります。
コードの設置もサポートいたしますので、その際はご相談ください。
有償でサポートいたします。