2018年11月16日金曜日

Googleスプレッドシートでメールの一斉送信をする

一斉にメールを送信したいとき、スプレッドシートとApp Scriptを使うと簡単に実現できます。

【使うもの】
・スプレッドシート
・App Script
・Gmail

【手順】

1.以下のようなスプレッドシートを作成します。



2.スクリプトエディタを開きます。



3.以下のようにスクリプトを書きます。


function sendmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getDataRange();
  var lastRow = range.getLastRow();
  var list = range.getValues();
  var subject = "一斉送信テスト"
  var body = "送信テストです。"
  for(var i=1; i<lastRow; i++){
    var mail_list = list[i][1];
    MailApp.sendEmail(mail_list, subject, body);
    sheet.getRange(i+1, 3).setValue('送信完了');
  }
}

4.スプレッドシートにこのスクリプトをマクロとして登録します。




「関数を追加」をクリックします。



チェックアイコンが表示されると完了です。



5.使ってみる



「ツール」>「マクロ」の中に作成したスクリプトファイル名「sendmail」が追加されています。これをクリックすると、実際にメール送信を開始します。



送信が完了すると「ステータス」列に「送信完了」が追記されます。

以上、スプレッドシートで簡単にメールを一斉送信する方法をご紹介しました。

但し、この方法にも上限があります。

  • 送信1500通/24時間
  • 一回のスクリプトの実行時間6分
これは、1500通以上の送信、または一度で6分を超える実行はできないということです。
例えば、1通あたりのメール送信処理時間を0.4秒(今回の方法)とすると以下の見積りになります。

6分 → 360秒
360 ÷ 0.4 = 900(通)

本文が長く添付ファイルありのメールを送信するとなると、1通あたりの送信処理時間も長くなり、一度に送信するメール数も少なくなります。

と言っても、スクリプトの実行自体は送信上限に到達していない限り、何回でも実行できますので、上手に活用すれば良いと思います。


上限に関しての詳細はこちら
https://developers.google.com/apps-script/guides/services/quotas