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を管理しているアカウントのメールアドレスになります。
詳しい仕様は公式ドキュメント参照で。