6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Scriptを使って一度に大量のメールを送信

Last updated at Posted at 2015-02-25

Googleフォームで飲み会やレセプションの出欠を取った際、入力してくれた全ての人に返信メールを送りたいと思う人は多いはず。
本記事ではそんなGoogleフォームにおいて、GoogleAppsScriptを使ってSpreadSheetに記載されている全てのアドレス宛にメールを送る方法をご紹介します。

前提とするSpreadSheetのフォーマット

今回は以下のようなSpreadSheetから名前とメールアドレスを取得してメールを送信していきます。

名前 アドレス
山田太郎 yamada_taro@gmail.com
鈴木一郎 suzuki_ichiro@gmail.com

スクリプト

// トリガーに登録させる関数
function myFunction() {
	var mailAddressList = getMailAdressList();

	mailAddressList.forEach(function(addr, cnt) {
		sendMail(addr.addr, addr.name);
	});
}

/**
 * 送り先のリストを取得
 * @returns {Array}
 */
function getMailAdressList() {
	// SpreadSheetオブジェクトを取得
	var ss = SpreadsheetApp.getActiveSpreadsheet();
	var rg   = ss.getDataRange();
	var addrList = [];

	// 取り出した名前とアドレスをaddrListに入れる
	var maxRow = ss.getLastRow();
	for (var i=0; i < maxRow; i++) {
		var name = rg.getCell(i+1, 1).getValue();
		var addr = rg.getCell(i+1, 2).getValue();
		addrList.push({
			name: name,
			addr: addr
		});
	}

	return addrList;
}

/**
 * メールの送信
 * @param address
 * @param username
 */
function sendMail(address, username) {
	var title = '飲み会幹事よりお知らせ';
	var content = [
		username + ' さん',
		'',
		'飲み会への出欠回答ありがとうございました。',
		'現在 出席 ということで受け賜わっております。',
		'',
		'もし出欠に関し変更が発生した場合、飲み会の1週間前までに連絡を下さるようお願いします。',
		'',
		'以上、よろしくお願いいたします。'
	].join('\n');
	
	// メール送信
	GmailApp.sendEmail(address, title, content);
}

備考

  • 一度に大量にメールを送信すると送信時に遅延が発生します。
  • 送り主メールアドレスは自動でそのSpreadSheetを管理しているアカウントのメールアドレスになります。
    詳しい仕様は公式ドキュメント参照で。
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?