GoogleAdSenseの収益を時系列に記録しよう
Googleアドセンスの収益はその日のページビューやクリックスルーレートなどの複数の要素によって変動します。
なので、今日は〇〇円儲かったといってもアクセスの品質を見なければ実は意味がないんです。
薄利多売のページや高付加価値のページというものが存在します。
なので、Googleアドセンスでは自分のページでの広告クリック単価を数時間おきにレポートをしてくれます。
Dateオブジェクトを文字列に変換するユーティリティメソッド Utilities.formatDate(date, timeZone, format) 入力 date: 文字列に変換したいDateオブジェクト timeZone: タイムゾーン (JST, UTC など) format: JavaのSimpleDateFormatに準じたフォーマット指定文字列 出力 Dateオブジェクトを文字列にしたもの フォーマット指定文字 指定文字 時刻要素 y 年 M 月 d 日 E 曜日 H 時 (0-23) 24時制 h 時 (1-12) 12時制 a AM/PM m 分 s 秒 S ms z タイムゾーン (+nnnn)
をAdSenseで要求されている形式に直して、今回はさくっとアドセンスの収益を記録するスクリプトを書いてみました。
コードを書き始めるとGoogleのどのサービスと連携しますか?とサービスを追加できます。
この中にGmailやGoogleカレンダー、Googleマップといった大体のサービスは揃っています。
なので、今回で言えば、「AdSenseサービス」の利用をオンにします。
function myFunction() { //昨日の日の収益を移動 // 現在アクティブなシートを取得 var sheet = SpreadsheetApp.openById("自身のスプレッドシートID"); //先日のAdSenseデータの移動 sheet.getRange("A2:GV998").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 ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = sheet.getSheets()[0]; var adClientId = 'ca-pub-******************' 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]); sheet.getRange("A2").setValue(new Date()); 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]); }
このスクリプトを実行すると
その日の収益を記録してくれます。
しかも自動で。
あとは寝て待ちましょうという算段です。
詰みポイント
Dateオブジェクトで月を表す「M」と分を表す「m」があります
Monthとminiteを区別するためにアルファベットの大文字小文字が違います。
Dateオブジェクトで時間を表す「H」と24時制を表す「h」12時制があります。
大文字・小文字で18:00と表したり、6:00と表したりすることができます。
ここの大文字小文字で挙動が変わるので、注意が必要です。