Gmailの重要メールを毎日まとめて通知する

GASGmail通知
Gmailの重要メールを毎日まとめて通知するのサムネイル

Gmailの重要メールを毎日まとめて通知する方法を、GASおじがわかりやすく解説するぞ。中小企業の経営者さんやフリーランスの皆さん、日々のメールチェックで時間を取られていないかい?そんな忙しいあなたに、GAS(Google Apps Script)を使って毎日重要メールをまとめて通知する仕組みを提案するぜ。

なぜGmailの重要メールをまとめるのか?

メールが重要かどうかの判定はGmailの「重要マーク」やラベルでできるけど、それを毎回確認するのは面倒だ。そこで、GASで毎日決まった時間に重要メールを抽出し、まとめたレポートを生成して通知すれば、効率よく情報をキャッチできる。しかもGoogleアカウントの利用枠内で、追加の専用SaaS料金なしで実現可能だ。

※ただしApps Scriptのquota・実行上限はあるからそこは注意してくれ。

初期設定と必要権限

  1. GoogleアカウントのGmailとGoogleドライブにアクセスできること
  2. スクリプトエディタ(Google Apps Script)を開く
  3. Gmail API(GmailApp)はデフォルトで利用可能だが、DriveAppも使うので許可が必要になる
  4. installable trigger(時間主導型トリガー)を設定して、毎日決まった時間に処理を自動実行

個人情報の取扱いは当然注意しよう。スクリプトは個人のGoogleアカウント内で動作し、外部に情報を送信するコードは含めない。重要メールの内容を外部に公開しないことが大前提だ。

毎日まとめた重要メールを新しい日時付きシートに書き出すGASコード例

既存のシートデータはそのまま残しつつ、毎日新しいシートを追加して履歴を保つ方式だ。データの全消去や削除APIは使わない。入力検証やバッチ書き込みも意識してるぞ。

function createDailyImportantMailSummary() {
  const labelName = "重要"; // 重要メールに付けているラベル名を設定
  const maxEmails = 50;     // 最大取得メール数
  const spreadsheetId = "YOUR_SPREADSHEET_ID"; // 事前に作成したスプレッドシートIDをセット

  // 日付付きの新しいシート名を作成
  const dateStr = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyyMMdd_HHmmss");
  const sheetName = `重要メール_${dateStr}`;

  const ss = SpreadsheetApp.openById(spreadsheetId);
  const sheet = ss.insertSheet(sheetName);

  // ヘッダー行をセット
  const headers = ["日時", "送信者", "件名", "スニペット"];
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);

  // ラベルを取得
  const label = GmailApp.getUserLabelByName(labelName);
  if (!label) {
    Logger.log(`ラベル「${labelName}」が見つかりません`);
    return;
  }

  // メールスレッドを取得(未読・既読問わず)
  const threads = label.getThreads(0, maxEmails);
  if (threads.length === 0) {
    Logger.log("該当メールがありません");
    return;
  }

  const rows = [];

  // 各スレッドの最新メールを取得してまとめる
  threads.forEach(thread => {
    const messages = thread.getMessages();
    const lastMessage = messages[messages.length -1];

    // メール情報を抽出
    const date = lastMessage.getDate();
    const from = lastMessage.getFrom();
    const subject = lastMessage.getSubject();
    const snippet = lastMessage.getPlainBody().substring(0, 100).replace(/\r?\n/g, " ");

    rows.push([date, from, subject, snippet]);
  });

  // 日時順にソート(新しい順)
  rows.sort((a,b) => b[0] - a[0]);

  // バッチで書き込み(2行目以降)
  sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);

  // 自動列幅調整
  sheet.autoResizeColumns(1, headers.length);

  Logger.log(`${rows.length}件の重要メールをシート「${sheetName}」に出力しました`);
}

このコードは、指定したラベル「重要」が付いたメールスレッドから最大50件を取得し、最新メッセージの日時・送信者・件名・本文の一部を、新しい日時付きシートに書き出すものだ。既存のシートは手つかずで、毎回新規追加するので履歴管理に便利だ。

installable triggerの設定方法

GASエディタのメニューから「編集」→「現在のプロジェクトのトリガー」を開き、新しいトリガーを追加する。

  • 実行する関数をcreateDailyImportantMailSummaryに設定
  • イベントの種類は「時間主導型」→「日付ベースのタイマー」→「午前8時から9時の間」など好きな時間帯を選択

これで毎日決まった時間に自動実行される。手動実行もできるので動作確認も簡単だ。

バックアップと復元の注意点

  • 既存データを消さずに追記する方式なので、誤って重要メールが消えるリスクは低い。
  • もし間違ってスプレッドシートのシートを削除しても、Googleドライブのバージョン履歴から復元可能だ。
  • 定期的にスプレッドシート自体のバックアップを別ファイルに保存しておくのもオススメ。

コスト削減イメージ

例えば毎日30分かけて重要メールの確認・整理をしているとしよう。

  • 時給2000円のスタッフなら、30分で約1000円のコスト
  • GASで自動化してこの時間を0にできれば、月20営業日で約2万円のコスト削減効果(1000円 × 20日)
  • もちろんこれは仮定の計算式で、実際の効果は作業時間や人件費による

GASはGoogleアカウントの利用枠内で動作し、追加の専用SaaS料金はかからない。ただしApps Scriptのquota・実行上限はあるので、規模や頻度によっては注意して運用しよう。


GASおじが教える「Gmailの重要メールまとめ通知」はここまで。
もっと便利なGASツールを使い倒したいなら、GASおじラボのメンバーシップをぜひチェックしてくれ!500以上のツールやサンプルコードが使い放題になるぞ。

GASおじラボで500ツール使い放題 →