サイト運営をしている方は、日々のアドセンス収益結果をGoogle Adsenseから見に行きますよね。Webページを見に行くまでのワクワク感もけっこう好きなんですが、わざわざサイトを見に行かなくても収益が分かったら便利ですよね。そこで今回は、Googleアドセンスの収益結果をLINE botで受け取る方法を紹介したいと思います。
本記事で作るBOTは以下のとおりです。
- 本日から過去1週間分の収益をLINEでお知らせ
- 指定した間隔でお知らせ(毎週月曜、毎日18-19時の間 など)
GASのスクリプトはコピペOKのサンプルコードを載せています。プログラミング未経験の方でもなるべく分かりやすく説明していますので、ブロガーの方やサイト運営をしている方も是非チャレンジしてみてください♪
AdSense収益お知らせBOTの全体像
今回作成する内容は以下になります。
AdsenseのAPIでアドセンスの情報を取得し、GASからLINEに収益情報をBotを使って流します。流す頻度は1日1回とします。
収益を投稿する用のLINE botを作成する
アドセンス収益を流す用のLINE botを作成します。LINE botの新規登録、GASと連携するところまでは以下の記事をご参照ください。
LINE Developers では、以下をメモしておいてください。GASのソースコードに記載します。
項目 | 記載場所 |
---|---|
チャネルアクセストークン | 作成したチャネルの「Messaging API設定」の、一番下にある 「チャネルアクセストークン」という長い文字列。 |
ユーザーID | 作成したチャネルの「チャネル基本設定」の下のほうにある、 「あなたのユーザーID」 |
GASで収益情報の取得・LINEへの送信
Google Apps Script(GAS)では、以下の内容を実装します。
- AdSense Management APIから収益情報を取得する
- 取得した収益情報をLINEに送る
AdSense Management APIを追加する
まず、AdSense Management APIから収益情報を取得する処理を作成していきます。
GASを開き、左側メニューの「サービス」の+ボタンを押下します。
一番上に出ている「AdSense Management API」を選択し、追加します。
初回実行時はアクセス許可のダイアログが出ますので、すべて承認して追加を完了させます。「警告」や「安全でないサイト」とでますが、問題ありません。
「サービス」の下に「AdSense」と表示されていれば正しく追加されています。
AdSenseからデータを取得する
AdSenseからデータを取得するスクリプトを作成します。
const LINE_TOKEN = 'XXXXXXXXXXXXXXXXXXXX';
const LINE_ENDPOINT = 'https://api.line.me/v2/bot/message/push';
const LINE_USERID = 'XXXXXXXXXXXXXXXXXXXX';
const ACCOUNT_ID = 'XXXXXXXXXXXXXXXXXXXX';
const ACCOUNT_NAME = 'accounts/pub-' + ACCOUNT_ID;
const DIMENTION_ID = 'ca-pub-' + ACCOUNT_ID;
// Googleアドセンスの収益をLINEにお知らせ
function notifyAdsense(e) {
let res = generateReport();
lineReply(res);
}
// Googleアドセンスの収益レポート作成
function generateReport() {
let result;
const today = new Date();
const oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
// レポートの生成
const report = AdSense.Accounts.Reports.generate(ACCOUNT_NAME, {
filters: ['AD_CLIENT_ID==' + DIMENTION_ID],
metrics: ['ESTIMATED_EARNINGS'],
dimensions: ['DATE'],
...dateToJson('startDate', oneWeekAgo),
...dateToJson('endDate', today),
// Sort by ascending date.
orderBy: ['-DATE']
});
// ヘッダの生成
let headerNames = report.headers.map((header) => header.name);
const headersStr = ' 日付 収益 ';
// データ欄の生成
const cellValues = report.rows.map((row) => row.cells.map((cell) => cell.value));
const rowsStr = cellValues.map((row, rowIndex) => row.map((cell, cellIndex) => {
if (cellIndex === 1) {
return `${cell}円`;
}
return cell;
}).join(', ')).join('\n');
result = headersStr + '\n' + rowsStr
+ '\n\n詳細は以下:\nhttps://www.google.com/adsense/new/u/0/pub-' + ACCOUNT_ID + '/home';
return result;
}
function dateToJson(paramName, value) {
return {
[paramName + '.year']: value.getFullYear(),
[paramName + '.month']: value.getMonth() + 1,
[paramName + '.day']: value.getDate()
};
}
// LINEへの応答
function lineReply(replyText) {
const headers = {
"Authorization": "Bearer " + LINE_TOKEN,
'Content-type': 'application/json'
}
const messages = {
"headers": headers,
"to": LINE_USERID,
"messages": [{
"type": "text",
"text": replyText
}]
};
const options = {
"headers": headers,
"payload": JSON.stringify(messages)
};
UrlFetchApp.fetch(LINE_ENDPOINT, options);
}
上記ソースコードのうち、以下をご自身の環境のものに変更してください。
項目 | |
---|---|
LINE_TOKEN | LINEのチャネルアクセストークン |
LINE_USERID | LINEの「あなたのユーザーID」 |
ACCOUNT_ID | GoogleアドセンスのパブリッシャーID ※以下で解説します |
ACCOUNT_IDには、GoogleアドセンスのパブリッシャーIDを指定します。Google AdSenseにアクセスし、左側メニューから「アカウント」>「設定」>「アカウント情報」と進みます。
「パブリッシャーID」の、「pub-」以降の数字の部分をACCOUNT_IDに設定してください。
参考:AdSense Management API>Method: accounts.reports.generate
LINEに定期的に自動送信するよう設定する
LINEにメッセージを自動送信するには、GASの「トリガー」機能を使います。左側メニューにある「トリガー」を押します。
右下の「トリガーを追加」を押します。
トリガーの設定は以下のようにします。
実行する関数は「notifyAdsense」、イベントのソースは「時間主導型」、時間ベースのトリガーのタイプは「日付ベースのタイマー」としました。日付ベースの場合、毎日LINEに通知されるようになります。週に一度で良いという場合は「週ベースのタイマー」に変更してください。
トリガーが追加されたら設定完了です。
設定が完了すると、指定した時間帯にLINEにアドセンス収益のメッセージが届くようになります。メッセージの送信を停止したい場合には、トリガーを削除してください。
作成したスクリプトの動作確認
トリガー設定をすると、指定した時間帯にLINEが届きますが、今すぐに動作確認をしたい場合には以下の手順で行います。
1.GASのスクリプトエディタ上部のメニュー「デバッグ」の右横のプルダウンに、「notifyAdsense」と表示されていることを確認します。
2.「実行」ボタンを押します。
「実行ログ」に実行開始・実行完了が表示され、エラーが出ていなければOKです。
実行が完了すると、LINEにメッセージが送信されます。
エラーが発生した場合
エラーが出ている場合には、実行ログのエラー内容をチェックします。
上記は、GoogleJsonResponseExceptionというAPI呼び出し時のエラーとなっています。エラーが発生した行が2箇所出ていますが、実際にAPI呼び出しを行っているほうを見に行きます。このエラーは、アカウントリソース名(accounts/pub-12345 など)が正しく指定できていない場合に発生するエラーです。そもそもアカウントIDを間違えていないか、形式が正しいかなど考えられる内容を一つずつ試しながらエラーを潰していきます。
今回は、サンプルコードをコピーして作成いただいているのでエラーは発生しないとは思いますが、何か不明点があればお気軽にコメントいただければと思います。
まとめ
今回は、Googleアドセンスの収益結果をLINE botで受け取る方法を紹介しました。本記事では1週間分の収益をお知らせするコードを作成しましたが、収益が発生している場合のみお知らせするようにしたり、1クリックあたりの収益や1000クリックあたりの収益などAdSenseの管理画面で見れる情報はすべて取得できますので、ご自身の欲しい情報に合わせてカスタマイズしても良いかと思います。
以下ページでは、Googleスプレッドシートに収益レポートを記載する方法も紹介されています。https://developers.google.com/apps-script/advanced/adsense?hl=ja
本記事の内容で分からない点などがありましたら、コメント欄または問い合わせから気軽にご質問いただければと思います!また、GAS×LINEで自動化するアイディアは過去記事でも紹介していますので、興味のある方はぜひ覗いてみてください。
コメント