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

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

作成:2011-07-13 08:05
更新:2011-07-13 08:05

■Gmail利用に必要なオブジェクト

Google Apps Scriptは、Googleが提供するさまざまなサービスを統合的に処理することができます。今まで、Googleドキュメントのスプレッドシートぐらいしか利用してきませんでしたが、Google Apps Scriptの基本部分がひと通りわかったところで、それ以外のサービスについて考えていくことにしましょう。

まずは「Gmail」からです。Gmailは、Googleの提供するサービスの中の「メール」を担当するものですね。Gmailに関する機能は、いくつかのオブジェクトとして提供されています。それらのオブジェクトを組み合わせることでGmailサービスに保管されているデータ(メールやスレッド、ラベルなど)を操作することができます。

まずは、ごく簡単なサンプルコードを見てもらいましょう。下のリスト欄に挙げたサンプルは、Gmailの受信ボックスにアクセスし、そこにあるメールをスレッドごとに整理してスプレッドシートに書き出すものです。シートには、まずそのスレッドのメール数が表示され、その後に各メールの日付、From、To、タイトルといったものが横に並んで書き出されます。

とりあえず、ここではただの関数として定義してありますので、そのままスクリプトを実行してください。また実行時には、必要なアクセスに関する認証が必要となります。例によって画面にダイアログが現れたら認証してください。

ここではGmailにアクセスし、そこから受信ボックスのスレッドを取得し、各スレッドからメールをとり出し、それぞれのメールの内容を取得してスプレッドシートに書き出す――といった流れで処理を行っています。では、Gmailにアクセスするために用意されているオブジェクトには、どのようなものがあるのでしょうか。ざっと整理してみましょう。

GmailApp――Gmailアプリのオブジェクトです。
GmailThread――スレッド(複数のメールのやり取りをひとまとめにして管理するもの)のオブジェクトです。
GmailMessage――これが個々のメールを管理するオブジェクトになります。
GmailLabel――ラベルのオブジェクトです。

Gmailでは、メールはスレッド単位でまとめられ管理されています。メールにアクセスするためには、まずGmailAppからGmailThreadを取得し、それからGmailMessageを取り出す、というような作業を行うことになります。ここであげたサンプルでは、そのもっとも基本的な作業を行っているのです。

では、それぞれのオブジェクトの使い方について、順番に整理していきましょう。スクリプトの詳細については、それぞれのオブジェクトの説明がわかれば、自然と理解できるはずですので、とりあえず先へ進みましょう。

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

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

●プログラム・リスト●

function getMail(){
	var sheet = SpreadsheetApp.getActiveSheet();
	var thds = GmailApp.getInboxThreads();
	var row = 1;
	for(var n in thds){
		var thd = thds[n];
		sheet.getRange(row++,1).setValue(thd.getMessageCount());
		var msgs = thd.getMessages();
		for(m in msgs){
			var msg = msgs[m];
			var from = msg.getFrom();
			var to = msg.getTo();
			var date = msg.getDate();
			var subject = msg.getSubject();
			var body = msg.getBody();
			sheet.getRange(row,1).setValue(date);
			sheet.getRange(row,2).setValue(from);
			sheet.getRange(row,3).setValue(to);
			sheet.getRange(row,4).setValue(subject);
			//sheet.getRange(row,5).setValue(body); // カット!
			row++;
		}
	}
}
※関連コンテンツ

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