AdSenseのダッシュボードを見に行かなくてOK!GASで自動通知する方法

Google Apps Script(以降GAS)を使って、Google AdSense(以降AdSense)の当日収益をGmailで通知してみました。AdSenseのページに行けばダッシュボードでも見れますが、それも面倒だなと思って作ったスクリプトになります。これの利点は無料の1点です。バッチ的処理も、GASを使えば無料で使えます。API関連のバッチ処理であれば、かなりのことができるのは頼もしいです😎

AdSense メール通知システムの作り方

必要なもの

  • Googleアカウント(AdSenseアカウントと同じもの)
  • AdSenseアカウント(AdSenseが使えることを前提とします)

作成の手順

1.Google Apps Scriptプロジェクトを作成

まずは、GASのページにアクセスします。

ページ左上にある【新しいプロジェクト】ボタンをクリックします。

左上の【無題のプロジェクト】をクリックして、プロジェクト名をAdSense収益通知などに変更します。

2. AdSense Management APIを有効化

続いてGAS内からAdSenseの機能を使用できるようにAdSense Management APIを有効化します。

スクリプトエディタの左側メニューから【サービス】タブの【+】ボタンをクリックします。

開いたダイアログのリストから【AdSense Management API】を選択、【バージョン】はv2を選択、その後【追加】ボタンをクリックします。

3 スクリプトを編集(コピー)

既存のコードは全て削除してから、以下のコードをスクリプトエディタにコピー&ペーストします。

/**
 * AdSense収益を取得してGmailで通知する
 */
function sendAdSenseReport() {
  try {
    // アカウント情報を取得
    const accounts = AdSense.Accounts.list();
    
    if (!accounts.accounts || accounts.accounts.length === 0) {
      Logger.log('AdSenseアカウントが見つかりません');
      return;
    }
    
    // 最初のアカウントを使用
    const accountName = accounts.accounts[0].name;
    const accountDisplayName = accounts.accounts[0].displayName || 'AdSenseアカウント';
    
    // 今日の日付を取得
    const now = new Date();
    const today = Utilities.formatDate(now, Session.getScriptTimeZone(), 'yyyy-MM-dd');
    
    // レポートを生成(API v2の正しい形式)
    const report = AdSense.Accounts.Reports.generate(accountName, {
      dateRange: 'TODAY',  // 'TODAY', 'YESTERDAY', 'LAST_7_DAYS', 'LAST_30_DAYS' など
      metrics: ['ESTIMATED_EARNINGS', 'PAGE_VIEWS', 'CLICKS', 'AD_REQUESTS'],
      dimensions: ['DATE']
    });
    
    // 収益データを取得
    let earnings = 0;
    let pageViews = 0;
    let clicks = 0;
    let adRequests = 0;
    
    if (report.rows && report.rows.length > 0) {
      const row = report.rows[0];
      // セルの値を取得(インデックスは dimensions + metrics の順)
      earnings = parseFloat(row.cells[1].value) || 0;
      pageViews = parseInt(row.cells[2].value) || 0;
      clicks = parseInt(row.cells[3].value) || 0;
      adRequests = parseInt(row.cells[4].value) || 0;
    }
    
    // 通貨を取得(デフォルトはJPY)
    const currency = accounts.accounts[0].currencyCode || 'JPY';
    
    // CTRとRPMを計算
    const ctr = pageViews > 0 ? ((clicks / pageViews) * 100).toFixed(2) : '0.00';
    const rpm = pageViews > 0 ? ((earnings / pageViews) * 1000).toFixed(2) : '0.00';
    
    // 現在時刻を取得
    const nowStr = Utilities.formatDate(now, Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm');
    
    // メール本文を作成
    const subject = `【AdSense】本日の収益: ${currency} ${earnings.toFixed(2)}`;
    
    const body = `
AdSense収益レポート
━━━━━━━━━━━━━━━━━━━━━━
日付: ${today}
取得時刻: ${nowStr}
アカウント: ${accountDisplayName}

【収益情報】
見積もり収益額: ${currency} ${earnings.toFixed(2)}

【パフォーマンス】
ページビュー数: ${pageViews.toLocaleString()}
クリック数: ${clicks.toLocaleString()}
広告リクエスト数: ${adRequests.toLocaleString()}

【指標】
CTR (クリック率): ${ctr}%
RPM (1000回表示あたりの収益): ${currency} ${rpm}

━━━━━━━━━━━━━━━━━━━━━━
このメールは自動送信されています。

AdSense管理画面: https://adsense.google.com/
    `.trim();
    
    // 自分宛にメール送信
    const recipient = Session.getActiveUser().getEmail();
    GmailApp.sendEmail(recipient, subject, body);
    
    Logger.log('メール送信完了: ' + recipient);
    
  } catch (error) {
    Logger.log('エラー: ' + error.toString());
    
    // エラー通知メール
    const recipient = Session.getActiveUser().getEmail();
    GmailApp.sendEmail(
      recipient, 
      '【AdSense通知】エラーが発生しました', 
      'AdSense収益取得中にエラーが発生しました:\n\n' + error.toString()
    );
  }
}

/**
 * テスト実行用の関数
 */
function testRun() {
  sendAdSenseReport();
}

これで準備完了です。

基本的にはAdSense APIの使用方法に従うのでドキュメントなどを読んでいけば大丈夫だと思います。 送信するメールアドレスの指定を行っていないと思われるかもしれませんが、スクリプトが処理を行うときのアクティブなユーザアカウントのメールアドレスに送信される様になっています。

4 初回実行(要認証)

コードの編集が終わったら、上部のツールバーから関数【testRun】をプルダウンから選択し、

【実行 ▶】ボタンをクリックします。

初回実行時には認証の処理を行う必要があるので、権限の確認画面が表示されたら、以下の手順をおこなってください。

【権限を確認】ボタンをクリックします。

つづいて、使用するGoogleアカウントを選択し、

【詳細】→【AdSense収益通知(安全ではないページ)に移動】をクリック、【許可】ボタンをクリックします。これで認証は完了となりGASのスクリプトが処理されます。

実行処理完了後、Gmailに通知メールが届いているか確認を行ってください。

成功すると以下のようなメールが受信されます。

開発ページのログにも表示されています。

5. 定期実行の設定

あとはバッチ的な動作設定となりますが、今回は定期的に動作させるためにトリガーの設定を行います。

左側メニューから【トリガー」(時計アイコン)】(⚠️時計のアイコンは2つあります⚠️)をクリックし、右下の【トリガーを追加】ボタンをクリックします。

設定ダイアログが表示されるので、以下のように設定して【保存】します。

設定例

トリガー(1日の終わりに)

  • 実行する関数 … sendAdSenseReport
  • イベントのソース … 時間主導型
  • 時間ベースのトリガー … 時刻ベースのタイマー
  • 時刻 … 午後10時~11時

6. 完成!

これで設定完了です。指定した時間帯に自動でAdSenseのレポートがGmailに届きます。 以下の情報がメールで届きます。

  • 日付と取得時刻
  • 見積もり収益額
  • ページビュー数、クリック数、広告リクエスト数
  • CTR(クリック率)、RPM(1000回表示あたりの収益)

7. カスタマイズ方法

送信先メールアドレスを変更したい場合

変更箇所 Session.getActiveUser().getEmail() を変更

const recipient = 'your-email@example.com'; //ここにメールアドレスを埋め込みます。
GmailApp.sendEmail(recipient, subject, body);

複数のメールアドレスに送信したい場合

const recipients = 'email1@example.com,email2@example.com'; //カンマ区切りでメールアドレスを並べます。
GmailApp.sendEmail(recipients, subject, body);

今日ではなく、昨日(1日の締めを見るなど)のデータを見る場合

dateRange: 'TODAY'dateRange: 'YESTERDAY' に変更

過去7日間の収益を取得したい場合

dateRange: 'TODAY'dateRange: 'LAST_7_DAYS' に変更

⚠️使用上の注意事項

無料枠の制限

  • GmailApp.sendEmail … 1日100通まで1日の上限は100受信者まで(20251010修正)
  • トリガー実行 … 1日20回まで1日の上限は合計実行時間90分まで(20251010修正)

データの精度

  • AdSenseの収益は見積もりです
  • 確定収益は翌月に確定されます

処理時刻の精度

  • トリガーは指定した時刻の前後1時間以内に実行されます
  • (例)【午前8時~9時】と設定した場合には、8:00~9:00のどこかで実行されることになります

おわりに

これで無料のAdSenseメール通知システムの完成ができました。小ネタということで。 工夫次第で、Slackなどに送信したり、Spreadsheetにログをつけるということもできそうですね😎

参考リンク