副業でAdsenseを利用していると日中もどのくらい稼げているか気になる場合が多いと思います。
毎回、Adsenseのページを開いて確認するというのは面倒くさいと感じることが多いです。そこで、簡単に確認できる方法を模索していました。
その際に、Line通知だったら簡単に確認できて楽だと思いました。また、日中(仕事中)も簡単に確認できて一石二鳥だと思い、GASとNotifyを利用して通知を自動化しました。
この記事の対象
GASとNotifyの準備
「GAS」と「Notify」というサービスを利用するので、それぞれ使用できるようにする必要があります。
その際に、それぞれの設定を以下を参考にしました。ご参照下さい。
Notifyの使用例としてこちらでも紹介しています。ご参照下さい。
>>>noteの編集部のおすすめ記事のタイトルをスクレイピング-Lineに送信してみた-
【補足】Adsense Management API
GASの機能として「Adsense Management API」を用います。その中でも今回は「AdSense.Accounts.Reports.generate()」関数を用います。
リンク先は公式サイトになっています。今回は、こちらを参考にプログラムを作成しています。適宜、ご参照下さい。
プログラム
//1---ID設定
function myGetAdSenseData() {
const publisherId = 'pub-**************';
var adClientReportingDimensionId = 'ca-' + publisherId
var accountName = 'accounts/' + publisherId;
generateReport(accountName, adClientReportingDimensionId);
}
//2---Adsense reportの呼び出し
function generateReport(accountName, adClientReportingDimensionId) {
const today = new Date();
const report = AdSense.Accounts.Reports.generate(accountName, {
filters: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientReportingDimensionId)],
metrics: ['ESTIMATED_EARNINGS','PAGE_VIEWS','AD_REQUESTS','CLICKS'],
dimensions: ['DATE'],
...dateToJson('startDate', today),
...dateToJson('endDate', today),
orderBy: ['+DATE']
});
if (report.rows) {
var incomeAmount = Number(report.rows.map((row) => row.cells.map((cell) => cell.value))[0][1]);
var incomeAmount2 = Number(report.rows.map((row) => row.cells.map((cell) => cell.value))[0][2]);
var incomeAmount3 = Number(report.rows.map((row) => row.cells.map((cell) => cell.value))[0][3]);
var incomeAmount4 = Number(report.rows.map((row) => row.cells.map((cell) => cell.value))[0][4]);
var body = "\n本日の売上:" + incomeAmount.toLocaleString() + "円" +"\n本日のPV:" +incomeAmount2.toLocaleString()+"\n本日の広告リクエスト:" +incomeAmount3.toLocaleString() + "\n本日のクリック数:" +incomeAmount4.toLocaleString()
sendLine(body);
}
}
function escapeFilterParameter(parameter) {
return parameter.replace('\\', '\\\\').replace(',', '\\,');
}
function dateToJson(paramName, value) {
return {
[paramName + '.year']: value.getFullYear(),
[paramName + '.month']: value.getMonth() + 1,
[paramName + '.day']: value.getDate()
};
}
//3---Notify設定
function sendLine(body){
const LINE_APIKEY = '**************'
var options = {
"method": "post",
"payload" : {"message": body},
"headers": {"Authorization": "Bearer " + LINE_APIKEY}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
以下は解説になります。
//1---ID設定
function myGetAdSenseData() {
const publisherId = 'pub-**************';
var adClientReportingDimensionId = 'ca-' + publisherId
var accountName = 'accounts/' + publisherId;
generateReport(accountName, adClientReportingDimensionId);
}
1の部分では、AdsenseのIDを指定して、Reportを呼び出す関数に値を渡しています。「pub-**************」は自身のIDを設定して下さい。
IDの取得方法は後述をご参照下さい。
//2---Adsense reportの呼び出し
function generateReport(accountName, adClientReportingDimensionId) {
const today = new Date();
const report = AdSense.Accounts.Reports.generate(accountName, {
filters: ['AD_CLIENT_ID==' + escapeFilterParameter(adClientReportingDimensionId)],
metrics: ['ESTIMATED_EARNINGS','PAGE_VIEWS','AD_REQUESTS','CLICKS'],
dimensions: ['DATE'],
...dateToJson('startDate', today),
...dateToJson('endDate', today),
orderBy: ['+DATE']
});
2の部分ではレポートを呼び出しています。レポートの呼び出しは「Adsense.Accounts.Reports.generate()」を用いています。引数の「metrics」で欲しいレポート情報を指定しています。
//3---Notify設定
function sendLine(body){
const LINE_APIKEY = '**************'
var options = {
"method": "post",
"payload" : {"message": body},
"headers": {"Authorization": "Bearer " + LINE_APIKEY}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
3の部分ではNotifyの設定を行っています。「LINE_APIKEY = ‘**************’」は自身のAPIKEYを指定して下さい。
APIKEYの取得方法は以下をご参照下さい。
【結果】
上記ではGASとNotifyを用いています。GASはJavaScripを基にしたプログラムになっており、ネット上の情報だけでは中々理解できない部分があります。
そんなときに体系的に理解を深められるので「詳解! Google Apps Script完全入門 [第3版]」がおすすめです。
【補足】AdSense ID取得方法
AdSenseにアクセスします。
「アカウント」→「設定」→「アカウント情報」→「パブリッシャーID」
黒塗部分がIDになります。