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

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

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


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

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

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


■ 初期設定と必要権限

・GoogleアカウントのGmailとGoogleドライブにアクセスできること
・スクリプトエディタ(Google Apps Script)を開く
・Gmail API(GmailApp)はデフォルトで利用可能だが、DriveAppも使うので許可が必要になる
・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の相談や導入サポートを見たい方へ

この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。

■ 関連サービス

GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す