Google Apps ScriptでGmailの未読メールをスプレッドシートに自動記録する方法

NO IMAGE

はじめに

Gmailを使っていると、未読メールの管理が大変になることがあります。
特に、特定の送信元や件名のメールを整理したい場合、手動で確認するのは手間がかかります。

そこで、Google Apps Script(GAS)を使って、Gmailの未読メールをスプレッドシートに自動記録するスクリプトを作成しました。
このスクリプトを使うと、以下のような情報を一覧にまとめられます。

  • 送信元(From)
  • 件名(Subject)
  • 受信日時(Date)
  • メール本文の冒頭(Snippet)

スクリプトの概要

このスクリプトは以下の処理を行います。

  1. Gmailの未読メールを取得
  2. 送信元、件名、受信日時、本文の冒頭を抽出
  3. スプレッドシートに書き込む

スクリプトのコード

以下のコードをGoogle Apps Scriptのエディタに貼り付けて実行してください。

function logUnreadEmails() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var threads = GmailApp.search("is:unread"); // 未読メールを検索
  var messages = [];

  threads.forEach(thread => {
    var msgs = thread.getMessages();
    msgs.forEach(msg => {
      if (msg.isUnread()) {
        messages.push([
          msg.getFrom(),
          msg.getSubject(),
          msg.getDate(),
          msg.getPlainBody().substring(0, 100) // 本文の冒頭100文字
        ]);
        msg.markRead(); // 取得したメールを既読にする(必要ならコメントアウト)
      }
    });
  });

  if (messages.length > 0) {
    sheet.getRange(sheet.getLastRow() + 1, 1, messages.length, messages[0].length).setValues(messages);
  }
}

スクリプトの説明

  1. logUnreadEmails()
    • GmailApp.search("is:unread") で未読メールを検索
    • getFrom(), getSubject(), getDate(), getPlainBody() で必要な情報を取得
    • 本文は冒頭100文字だけ記録(長すぎる場合のため)
    • msg.markRead() でメールを既読に変更(不要ならコメントアウト)
    • スプレッドシートの最後の行にデータを追記

使い方

  1. Google スプレッドシートを開く
  2. 拡張機能 → Apps Script を開く
  3. 上記コードを貼り付けて保存
  4. logUnreadEmails() を実行

これで、未読メールのリストがスプレッドシートに記録されます。

スケジュール実行(自動化)

毎日自動で未読メールを記録する場合は、トリガーを設定します。

  1. Google Apps Script のエディタで「編集」→「現在のプロジェクトのトリガー」を開く
  2. 「トリガーを追加」ボタンを押す
  3. 関数を logUnreadEmails に設定
  4. 実行タイミングを「時間主導型」にして、1時間ごと・1日ごとなどに設定

おわりに

このスクリプトを使うと、Gmailの未読メールを簡単に管理できます。
仕事やプロジェクトの進捗管理に活用してみてください!

GASカテゴリの最新記事