Googleスプレッドシートから参加者へ一斉メール送信【GAS】
Googleフォームは便利なツールです
個人的にzoomのオンラインセミナーを開催することになりGoogleフォームで集めたアドレスにスプレッドシートの一斉送信スクリプトGAS(Google Apps Script)を使い参加者にURLを送った備忘録です。
本当に便利はツールですね。チマチマメールを送っていたら時間ばかり掛かるところでした。
先ずは、フォーム作成から(フォーム作成は割愛します)
フォーム→回答からスプレットシートの作成 (赤丸)をクリックして紐付けします。
新しいスプレットシートを作成
拡張機能→AppScriptと進みます。
ここに、メール一括送信のコードを書きます。
lamp.js は自由に名前が変えられます。myFunctionも名前変更できますよ。
function myOnline() {
Logger.log(MailApp.getRemainingDailyQuota()); //メール送信前の数を取得
/* スプレッドシートのシートを取得と準備 */
var mySheet=SpreadsheetApp.getActiveSheet(); //スプレッドシートを取得
var rowSheet=mySheet.getDataRange().getLastRow(); //スプレッドシートの使用範囲のうち最終行を取得
/* ドキュメント「メール本文テスト」を取得する */
var docTest=DocumentApp.openById("xxxxxxxxxxxxxxxxxxxxxxx"); // GoogleドキュメントをIDで取得
var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
/* シートの全ての行について氏名を差し込みログに表示*/
for(var i=2;i<=rowSheet;i++){ //列(row)の値を取得
var strMei=mySheet.getRange(i,2).getValue(); //氏名
var strEmail=mySheet.getRange(i,3).getValue(); //email
var strBody=strDoc.replace(/{氏名}/g,strMei); //氏名の差替えリスト
/* メール表題 */
var strSubject = "LAMP環境オンラインセミナー参加者様"; //メールタイトル
/* メールを送信 */
GmailApp.sendEmail(
strEmail, //toアドレス
strSubject, //メールタイトル
strBody, //本文
);
}
MailApp.sendEmail(strEmail,strSubject,strBody);
Logger.log(MailApp.getRemainingDailyQuota()); //メールの送信後の数を取得
}
一度「デバック」すると「承認が必要です」とアラームが出ます。→「権限を承認」→
アカウント選択→(安全なページでないページ)に移動→アクセスが許可されました
これで使えます。
// GoogleドキュメントをIDで取得
Googleドキュメントの赤い囲みのところをコピペします。
//氏名の差し替えリスト の部分はGoogleドキュメントの {氏名} と同じ字にして下さいね。
// メール送信前の数を取得 //メール送信後の数を取得
Google Apps Script のReference によると1日の受け取り数が決まっています。無料の場合ですと1日100通までとなっています。ここで気をつけたいことは送信数プラス1で送信しますので、実質99人までとなる事とデバックでもカウントが減って行きます。下記のログで確認して下さいね。さらにデバック等で確認していく内に100以上になると突然エラーになります。これは時間を置かないとダメです。どこを基準にして日に100なのか知りたい所です。自分の場合夕方にリセットされた事があるので、多分アメリカロスアンゼルス時間ではないかと睨んでいます。これを知らないで何がエラーになるのかわかりませんでした。
Logger.log(MailApp.getRemainingDailyQuota()); //メール送信前の数を取得 MailApp.sendEmail(strEmail,strSubject,strBody); Logger.log(MailApp.getRemainingDailyQuota()); //メールの送信後の数を取得
Google Workspace accounts は有料になりますが1日1500通となっています。(未確認)
※Google Workspace accounts で契約して調べてみましたがログでは100を基準にしていました。さらにレファレンスを調べると累積で100ドル(米)支払って、さらに60日経過する事がどうのこうのと書いていました。個人で契約するとかなり長い年月が必要となるかもです。その辺は追って報告します。会社関係で契約すれば1万位すぐですがそれでも2ヶ月待ちになりのでしょうか?