スキップしてメイン コンテンツに移動

GASで未読★検索スレッド

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 検索を組み合わせることで、メール処理の自動化を高度にカスタマイズできます。検索演算子を駆使し、業務フローに合わせたスクリプトを作成してみてください。

この記事はAIによって作成されました。

コメント