Google Apps Scriptを使ったメールの一斉送信

Google Apps Scriptを使ったメールの一斉送信

目次

初めに
Googleスプレッドシートの設定
Googleドキュメントの設定
送信テスト
注意点
終わりに

初めに

本記事ではGoogleAppsScriptを使ったメールの一斉送信する方法を紹介してきます。
馴染みのあるGoogleスプレッドシートとGoogleドキュメントを使い作成していきます。
Googleアカウントがあれば作成可能ですので、ぜひお試しください。

Googleスプレッドシートの設定

今回はチェックボックスを設け、チェックのついた相手へパスワードを記載したメールを送信し、無事完了したら送信済みと表示するという挙動をするように作成していきます。

まずはGoogleスプレッドシートの設定です。
以下のようにスプレッドシートを作ります。

A:No
B:チェックボックス
C:会社名
D:氏名
E:メールアドレス
F:パスワード
G:送信済みマーク

Googleスプレッドシートの設定

リストの作成が完了したら、メニューバーから「ツール」>「スクリプトエディタ」を選択します。

スクリプトエディタを起動

スクリプトエディタが開いたら、下記コードを入力します。

スクリプトエディタ画面

スクリプトエディタに下記コードを入力します。

<code>function onOpen(){

    var myMenu=[
      {name: "メール送信", functionName: "sendMail"}
    ];
    SpreadsheetApp.getActiveSpreadsheet().addMenu("メール",myMenu); //メニューを追加
  }

function sendMail(){
      var result = Browser.msgBox("メール送信を実行します。",Browser.Buttons.OK_CANCEL);

      if (result == "cancel"){
          Browser.msgBox("中止しました",Browser.Buttons.OK);
      }
      else{

      var sheet = SpreadsheetApp.getActiveSheet();
      var columnDVals = sheet.getRange('E2:E100').getValues();
      var LastRow = columnDVals.filter(String).length;
      Logger.log(LastRow);
      
      var values = sheet.getRange(1, 2, LastRow+1, 7).getValues();
      var doc = DocumentApp.openById('GoogleドキュメントID');//GoogleドキュメントのIDを指定
      var docText = doc.getBody().getText();
      var subject = 'メール送信テスト'; //メールの件名
      var senderName = {name: '田村テスト送信'}; //差出人名
      
      for(let i=1; i&lt;=LastRow; i++){
        
        var check = values[i][0];//チェックボックス
        var company = values[i][1]; //会社名
        var Name = values[i][2]; //氏名
        var mailAddress = values[i][3]; //メールアドレス
        var password = values[i][4]; //パスワード
        var sent = values[i][5];//送信済み
        
        var body = docText
          .replace('{会社名}',company)
          .replace('{氏名}',Name)
          .replace('{メールアドレス}',mailAddress)
          .replace('{パスワード}',password);
          
        if(check === true &amp;&amp; sent == '送信済み')
          Browser.msgBox(i+"は既に送信済みです");
        
        else if(check === false){
          ;}
          
        else if(check === true){
          GmailApp.sendEmail(mailAddress, subject,body,senderName);
          sheet.getRange(i+1 , 7).setValue('送信済み')
          };//送信済みの入力  
      }
        Browser.msgBox("確認", "メール一斉送信が完了しました。", Browser.Buttons.OK)
        sheet.getRange('B2:B100').setValue("FALSE");
      }
    }</code>

Googleドキュメントの設定

次にメール本文をGoogleドキュメントに入力します。
スプレッドシートに入力した内容を、反映させたい箇所は{}波かっこでくくります。
今回は、会社名、氏名、メールアドレス、パスワードをそれぞれ反映する設定にしています。

またURLの中に含まれているシートIDをコピーし、スクリプトエディタへ貼り付けます。
赤い囲いで囲まれている部分(/editの前部分)がドキュメントIDです。

Googleドキュメントの設定とドキュメントIDのコピー

テスト送信

スプレッドシートとドキュメントの設定が終わったら送信テストを行います。
スプレッドシートの送信したい相手のチェックボックスへチェックを入れ、メニューバーの「メール」をクリックします。
※スクリプトエディタで追加したメール送信用の新しいメニューです

チェックボックスとメール送信ボタン

メール送信を行うと画面中央に「メール送信を実行します。」のダイアログが表示されます。

メール送信の実行確認ダイアログ

キャンセルを押すと、実行中止のダイアログを表示します。

送信が完了すると画面中央に「メール一斉送信が完了しました」とダイアログが表示されます。

メール送信完了ダイアログ

チェックボックスのチェックが消え、送信済み欄に送信済みが入力されます。

送信済みが入力された相手にメールを送ろうとした場合、「(No)はすでに送信済みです。」のダイアログを表示します。

既に送信済みダイアログ

以上で設定は完了です。

注意点

1日のメール送信上限は100通と決まっております。(Googleメールの制限)
そのため、一斉送信で20通送る場合は1日に5回、一斉送信で50通送る場合は1日に2回
100通を一斉送信しようとすると1日に1回しか実行できません。

最後に

今回メールの一斉送信をGoogleAppsScriptを使って行いました。
Googleフォームと連携し、入力者へ自動送信するような設定など、改善点はたくさんありそうです。
また改めて追加機能追加してみようと思います。
無料で行える設定ですので、興味のある方はぜひお試しください。