GASで未読★検索スレッド
GAS連携とGmail検索の概要
Google Apps Script(GAS)は、Gmail API を利用してメールを検索・操作する際に非常に便利です。GAS から Gmail の検索機能を呼び出すことで、特定のキーワードやラベル、未読状態などを条件にしたメールの抽出が可能になります。この記事では、GAS 連携を前提に Gmail 検索の基本的な使い方から、スレッドやメッセージの取得、未読・スター付き・ラベルでのメール処理までを解説します。
Gmail検索でsearchを使う
Gmail の検索は GmailApp.search(query) で実行します。query には Gmail の検索演算子をそのまま記述でき、例えば「from:example@example.com is:unread」や「label:重要」などが検索できます。検索結果は Message[] の配列として返され、ループで処理できます。
var threads = GmailApp.search('from:alice@example.com is:unread');
for (var i = 0; i < threads.length; i++) {
var msgs = threads[i].getMessages();
// メッセージごとの処理
}
スレッドとgetInboxThreads
メールはスレッド単位で管理されます。GmailApp.getInboxThreads() は受信トレイにある全スレッドを取得し、getMessages() で各スレッド内のメッセージを取得できます。スレッド単位で処理することで、同一会話の複数メッセージをまとめて扱うことができます。
var inboxThreads = GmailApp.getInboxThreads();
for (var t = 0; t < inboxThreads.length; t++) {
var msgs = inboxThreads[t].getMessages();
// スレッド内のメッセージを処理
}
メッセージ取得とgetMessages
スレッドから取得した Message[] は getSubject()、getBody()、getFrom() などのメソッドで詳細情報を取得できます。さらに isUnread() や isStarred() で未読・スター付きかどうかを判定し、必要に応じて markRead() や star() で状態を変更できます。
var msg = msgs[0];
if (msg.isUnread()) {
msg.markRead();
}
if (!msg.isStarred()) {
msg.star();
}
未読・スター付き・ラベルでメール処理
未読メールだけを対象に処理したい場合は検索クエリに is:unread を付け、スター付きメールは is:starred、特定のラベルは label:ラベル名 を使用します。複数条件を組み合わせることで、例えば「未読でラベルが重要かつスター付き」のメールを抽出できます。
var query = 'is:unread is:starred label:重要';
var msgs = GmailApp.search(query);
for (var i = 0; i < msgs.length; i++) {
var msg = msgs[i];
// 必要な処理
}
このように GAS 連携と Gmail 検索を組み合わせることで、メール処理の自動化を高度にカスタマイズできます。検索演算子を駆使し、業務フローに合わせたスクリプトを作成してみてください。
コメント
コメントを投稿