初心者でも簡単!GASでメールスレッドを自動管理する方法

メールが大量に来て、整理するのが大変だな…。GASで自動管理できないかな?
猫男
猫男
catman
catman
心配するな。catmanがGASでメールスレッドの自動管理を教えてやろう!

GASでメールスレッドを自動整理する基本

Gmailのスレッドとは、

同じ話題のメール(送信・返信など)がひとつにまとめられた会話のまとまりのこと

だ。例えば、

  • 猫男が猫娘に「打ち合わせについて」という件名で送信
  • 猫娘がそのメールに「返信」する

という現象が起こったなら、Gmailではこの2通を同じスレッドとして表示するんだ。

GASを使えば、メールのスレッドを整理整頓し、業務効率を向上させらるぞ。

GmailAppの基礎

GmailAppクラスを使うと、Gmail内のデータを操作できる。


function getUnreadThreads() {
 var threads = GmailApp.getInboxThreads(0, 10);
 for (var i = 0; i < threads.length; i++) {
     if (threads[i].isUnread()) {
         Logger.log("Unread thread: " + threads[i].getFirstMessageSubject());
     }
 }
}

GmailApp.getInboxThreads()で受信トレイのスレッドを取得できる。isUnread()メソッドで未読スレッドをチェックし、選別する。

スレッドの自動アーカイブ

スレッドをアーカイブしてメールボックスをすっきりさせる。


function archiveOldThreads() {
 var threads = GmailApp.search('older_than:1y');
 for (var i = 0; i < threads.length; i++) {
     threads[i].moveToArchive();
 }
}

GmailApp.search()を使って特定の条件でスレッドを検索し、moveToArchive()でアーカイブへ移動させる。

自動返信の設定

メールに自動返信を設定すると、即時対応が必要なときに便利だ。


function autoReply() {
 var threads = GmailApp.getInboxThreads(0, 5);
 for (var i = 0; i < threads.length; i++) {
     var messages = threads[i].getMessages();
     for (var j = 0; j < messages.length; j++) {
         if (!messages[j].isDraft() && messages[j].isInbox()) {
             GmailApp.sendEmail(messages[j].getFrom(), "Re: " + messages[j].getSubject(), "Thanks for your email. I'll get back to you soon.");
         }
     }
 }
}

sendEmail()メソッドを用いて、受信したメールの送信者に自動的に返信する。

すごい!GASならメールの対応も自動化できるんだね!
猫男
猫男

GASによるメールスレッド管理の注意点

  • スクリプトが実行しすぎると、Gmailの使用制限に達する可能性がある。
  • 自動操作によるメールの誤削除に注意すること。
  • プライバシーデータの取り扱いには慎重に。
catman
catman
注意点を守れば、GASでのメール管理は簡単で効果的だ。試してみるといいぞ!

練習問題

次のようなGASスクリプトを書いて、特定の件名を含むメールスレッドをラベルに振り分けてみよう。

 

解答・解説


function labelThreads() {
 var threads = GmailApp.search("subject:重要");
 var label = GmailApp.createLabel("重要メール");
 for (var i = 0; i < threads.length; i++) {
     label.addToThread(threads[i]);
 }
}

GmailApp.search()で「重要」を含む件名を持つスレッドを検索し、createLabel()でラベルを作成する。

addToThread()を用いて各スレッドにラベルを付与する。この方法で簡単に重要なメールスレッドを可視化できる。