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

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

作成:2011-07-13 08:22
更新:2011-11-04 16:41

■メッセージの送信とリプライ

Gmailはメールサービスですから、当たり前ですが「メールを送ること」がなにより重要です。

Google Apps Scriptには、MailApp.sendEmailという非常にシンプルなメール送信メソッドが用意されていましたが、これとは別にGmailサービスにもメール送信に関する機能がちゃんと用意されています。

まずは、通常の新規メールの送信からです。新規メッセージの送信は、GmailAppオブジェクトに用意されています。
GmailApp.sendEmail( 送信先, タイトル, ボディ, オプション)

送信先は、カンマでメールアドレスをつなげた形で指定します。またオプションは、以下のような値を保持したオブジェクトになります。

cc――カーボンコピーの送り先
bcc――ブラインドカーボンコピーの送り先
htmlBody――HTMLメールのボディ
name――送信者の名前表記
noReply――リプライしないように設定するか否か(真偽値)
replyTo――リプライ先
attachments――添付ファイル(Blob配列)

ccbccは、それぞれ第1引数と同じように、カンマでメールアドレスをつなげたものになります。MailApp.sendEmailと比べると面倒くさい感じですが、その代りにより細かなメールの設定が行えます。要するに、こちらが正式なもので、「MailApp.sendEmailは、必要最低限の情報だけでシンプルにメールを送れるようにした簡略版」というわけです。

この他、メッセージのフォワード/リプライに関するメソッドというのも用意されています。これはGmailMessageオブジェクトに用意されているもので、以下のようになります。

・フォワード/リプライの実行
《GmailMessage》.reply( ボディ, オプション );
《GmailMessage》.replyAll( ボディ, オプション );
《GmailMessage》.forward( ボディ, オプション );

ボディは、メッセージのボディとなるテキストですからわかりますが、その後のオプションというのは、sendEmailと同様にオブジェクトとなります。が、用意する値は少し減っています。

htmlBody――HTMLメールのボディ
name――送信者の名前表記
noReply――リプライしないように設定するか否か(真偽値)
replyTo――リプライ先
attachments――添付ファイル(Blob配列)

メッセージの送り先やタイトルなどがありませんが、これはリプライ(返信)だからです。新規にメッセージを送るのと違って、返送先などは最初から設定されているわけですから改めて用意する必要はないのですね。

では、利用例として、受信ボックスから「テスト」というテキストを含むスレッドを取得し、それらにリプライを送るサンプルを下に挙げておきましょう。ここでは、送られてきたメールの内容(From, To, Date, Subject, Body)をまとめて記述したものを返送しています。

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

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

●プログラム・リスト●

function replyMail(){
	var thds = GmailApp.getInboxThreads();
	for(var n in thds){
		var thd = thds[n];
		var subject = thd.getFirstMessageSubject();
			if (subject.indexOf("テスト",0) != -1){
				var mails = thd.getMessages();
				var mail = mails[0];
				var res = "受信しました。(スクリプトによるreplyテスト)\n";
				res += "\nFrom: " + mail.getFrom();
				res += "\nTo: " + mail.getTo();
				res += "\nDate: " + mail.getDate();
				res += "\nSubject: " + mail.getSubject();
				res += "\nBody:\n" + mail.getBody();
			 
				var opt = new Object();
				opt.htmlBody = "";
				opt.name = "Script";
				opt.noReply = true;
				opt.replyTo = "syoda@tuyano.com";
				opt.attachments = null;
				Logger.log(mail);
				Logger.log(opt);
				mail.reply(res,opt);
		}
	}
}
※関連コンテンツ

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