2021年1月29日金曜日

受信メール検索 - GAS

■スレッド検索


・件名から検索

var thd = GmailApp.search('subject:"検索文字"');
 検索条件は文字列で指定
subject:""で指定した文字を含む件名のスレッドを配列で取得

・複数の検索条件を指定

//and
var thd = GmailApp.search('subject:("検索文字1" "検索文字2")');

//or
var thd = GmailApp.search('subject:{"検索文字1" "検索文字2"}');
 複数条件を指定するときは半角スペースを空けて
( )で括ればand条件、{ }で括ればor条件となる

//送信者を指定
var thd = GmailApp.search('from:"メールアドレス"');

//日付を指定
var thd = GmailApp.search('after:2021/01/01');

//複合条件(and)
var thd = GmailApp.search('(subject:"検索文字" from:"メールアドレス" after:2021/01/01)');
 件名以外での検索も可能
 and、orの指定は上と同じ

 主な検索条件
 subject:件名
 from:送信者
 before:日付(指定日以前)
 after:日付(指定日以降)
 label:ラベル
 is:「unread」で未読、「read」で既読
 has:「attachment」添付ファイルあり

・取得する件数を指定

var thd = GmailApp.search('subject:"検索文字"', 0, 10);
 検索条件で取得できたスレッドのうち、何番目から何件取得するかを指定
.search()の第二引数は取得開始index、第三引数は取得件数
 取得開始indexは最新のスレッドから0始まり
 ※上のコードは最新(index 0)から10件を取得する

■メッセージ取得


・スレッドからメッセージを取得

var thd = GmailApp.search('subject:"検索文字"');

for(let i=0; i<thd.length; i++){
	var msgs = thd[i].getMessages();
}
 取得した各スレッドからメッセージの配列を取得
 最初に受信したメールはmsgs[0]
 以降そのメールに返信がある場合はmsgs[1]、msgs[2]、・・・と取得できる

■メールの内容取得


・メッセージからメール内容を取得

var thd = GmailApp.search('subject:"検索文字"');

for(let i=0; i<thd.length; i++){
	var msgs = thd[i].getMessages();

	//件名
	var strSub = msgs[0].getSubject();
	//本文
	var strBody = msgs[0].getBody();
}
 最初の受信メールの件名と本文を取得

var thd = GmailApp.search('subject:"検索文字"');

for(let i=0; i<thd.length; i++){
	var msgs = thd[i].getMessages();

	for(let j=0; j<msgs.length; j++){
		//件名
		var strSub = msgs[j].getSubject();
		//本文
		var strBody = msgs[j].getBody();
	}
}
 返信メールも含めて取得する場合はループを使用

 主な関数
 .getSubject():件名
 .getBody():本文
 .getDate():受信日
 .getFrom():送信者
 .getCc():CC
 .getBcc():BCC

0 件のコメント:

コメントを投稿