初心者でも簡単!GASでメールスレッドを自動管理する方法
メールが大量に来て、整理するのが大変だな…。GASで自動管理できないかな?

猫男

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
注意点を守れば、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()を用いて各スレッドにラベルを付与する。この方法で簡単に重要なメールスレッドを可視化できる。