Googleスプレッドシートから参加者へ一斉メール送信【GAS】

Googleフォームは便利なツールです

個人的にzoomのオンラインセミナーを開催することになりGoogleフォームで集めたアドレスにスプレッドシートの一斉送信スクリプトGAS(Google Apps Script)を使い参加者にURLを送った備忘録です。

本当に便利はツールですね。チマチマメールを送っていたら時間ばかり掛かるところでした。

先ずは、フォーム作成から(フォーム作成は割愛します)

Google Form

フォーム→回答からスプレットシートの作成 (赤丸)をクリックして紐付けします。Google Form

新しいスプレットシートを作成

Google Form

拡張機能→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で取得

documentID

Googleドキュメントの赤い囲みのところをコピペします。

//氏名の差し替えリスト  の部分はGoogleドキュメントの {氏名} と同じ字にして下さいね。

GoogleドキュメントID

// メール送信前の数を取得  //メール送信後の数を取得

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ヶ月待ちになりのでしょうか?

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください