libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

Gmailにアクセスする (3/7)

作成:2011-07-13 08:12
更新:2011-11-04 16:35

■GmailAppオブジェクト(2) スレッドの操作

GmailAppには、スレッド取得のためのメソッドの他に、取得したスレッドを操作するためのメソッドというのもいろいろと用意されています。

Gmailでは、スレッドやメールごとにさまざまな情報を付加することができます。重要度や既読の設定などですね。こうしたものをスレッドに追加するためのメソッドについて整理しておきましょう。――ただし! これらは「メッセージやスレッドの操作をする唯一の方法ではない」という点も理解しておいてください。

どういうことか?というと……実は、スレッドやメールの設定を操作する方法は、GmailAppのメソッド以外にもあるのです。それは、スレッドやメッセージのオブジェクトに用意されているメソッドを利用するものです。個人的には、こちらのやり方のほうがわかりやすいと思うので、GmailAppのメソッドは「これでもできる」という程度に頭に入れておけばいいでしょう。

・既読/未読の設定をする
GmailApp.markMessageRead( メッセージ );
GmailApp.markMessagesRead( メッセージ配列 );
GmailApp.markThreadRead( スレッド );
GmailApp.markThreadsRead( スレッド配列 );
GmailApp.markMessageUnread( メッセージ );
GmailApp.markMessagesUnread( メッセージ配列 );
GmailApp.markThreadUnread( スレッド );
GmailApp.markThreadsUnread( スレッド配列 );

・重要度のON/OFFをする
GmailApp.markThreadImportant( スレッド );
GmailApp.markThreadsImportant( スレッド配列 );
GmailApp.markThreadUnimportant( スレッド );
GmailApp.markThreadsUnimportant( スレッド配列 );

・スターをON/OFFする
GmailApp.starMessage( メッセージ );
GmailApp.starMessages( メッセージ配列 );
GmailApp.unstarMessage( メッセージ );
GmailApp.unstarMessages( メッセージ配列 );

現状では、その他のもの(スターやラベルなど)を操作するためのメソッドについては、GmailAppにはないようです。それぞれ、引数にメッセージやスレッドのオブジェクトを単体で設定するものと、配列を使ってまとめて設定するものが用意されています。配列を使う場合、メソッド名をよく見ると複数形のsがついています。同じメソッド名ではないので間違えないようにしましょう。

この他、スレッドの移動に関するメソッドもいろいろと用意されています。基本的に「スレッドを指定のトレーに移動する」という形になります。

・ゴミ箱に移動する
GmailApp.moveMessageToTrash( メッセージ );
GmailApp.moveMessagesToTrash( メッセージ配列 );
GmailApp.moveThreadToTrash( スレッド );
GmailApp.moveThreadsToTrash( スレッド配列 );

・アーカイブする
GmailApp.moveThreadToArchive( スレッド );
GmailApp.moveThreadsToArchive( スレッド配列 );

・受信箱に戻す
GmailApp.moveThreadToInbox( スレッド );
GmailApp.moveThreadsToInbox( スレッド配列 );

・スパムにする
GmailApp.moveThreadToSpam( スレッド );
GmailApp.moveThreadsToSpam( スレッド配列 );

これらも、主なトレイへの移動が用意されていることが分かります。やはりオブジェクト単体と、配列で引数を渡すものがあります。――この他、「ラベルの作成・削除」と[検索」のためのメソッドもあげておきましょう。
・ラベルの作成/削除
GmailApp.createLabel( テキスト );
GmailApp.deleteLabel( ラベル );

・メッセージを検索する
変数 = GmailApp.search( クエリー );
変数 = GmailApp.search( クエリー, 開始位置, 最大数 );

ラベルの作成は簡単です。引数に、作成するラベルのテキストを渡すだけです。これに対し、削除の方は、ラベルのテキストではなく「ラベルを示すオブジェクト(GmailLabel)」を渡す必要があります。これについては改めて説明するので、「そういうものだ」と考えておいてください。

検索は、検索内容を示す「クエリー」というテキストを引数に渡します。これは、Gmailでの検索フィールドに入力するものと同じものと考えてください。

では、簡単な利用例をあげておきましょう。下のリストは、受信トレイにある全スレッドを調べ、タイトルに「重要」とあるスレッドだけを未読に戻すサンプルです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function UnreadMail(){
	var thds = GmailApp.getInboxThreads();
	for(var n in thds){
		var thd = thds[n];
		var subject = thd.getMessages()[0].getSubject();
			if (subject.indexOf("重要",0) != -1){
				GmailApp.markThreadUnread(thd);
				Logger.log(thd);
		}
	}
}
※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る