2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gmailとスプレッドシートを使って一斉メール送信できるスクリプトを作った

Posted at

Gmail、スプレッドシートおよびGASを自分で調べて使える方向けの記事です。

設定方法

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

スクリーンショット 2019-12-24 17.19.37.png

以下のスクリプトをスプレッドシートに設定。

function myFunction() {
  /* スプレッドシートのシートを取得と準備 */
  var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
  var rowSheet = mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得

  /* 送信の確認 */
  var today = new Date();
  var strDate=mySheet.getRange(4,2).getValue(); //送信日
  if (Utilities.formatDate(today, 'Asia/Tokyo', 'yyyy/MM/dd') !== Utilities.formatDate(strDate, 'Asia/Tokyo', 'yyyy/MM/dd')) {
    Browser.msgBox("送信日が違うため送信できません。");
    return -1;
  }
  var isOk = Browser.msgBox((rowSheet - 6) + "件送信されます。続けますか?", Browser.Buttons.OK_CANCEL);
  if (isOk !== "ok") {
    Browser.msgBox("送信を中止します。");
    return -1;
  }

  /* fromアドレス、差出人名を準備 */
  var strFrom = mySheet.getRange(2,2).getValue(); //fromアドレス
  var strSender = mySheet.getRange(3,2).getValue(); //差出人

  /* シートの各行についてメールを送信 */
  for (var i = 7; i <= rowSheet; i++) {

    /* 送信済みの行はスキップ */
    var sent = mySheet.getRange(i,4).getValue(); //toアドレス
    if (sent !== "") {
      mySheet.getRange(i,4).setValue("送信スキップ");
      continue;
    }

    var strEmail = mySheet.getRange(i,1).getValue(); //toアドレス
    var strSubject = mySheet.getRange(i,2).getValue(); //メールタイトル
    var strBody = mySheet.getRange(i,3).getValue(); //本文

    /* メールを送信 */
    GmailApp.sendEmail(
      strEmail, //toアドレス
      strSubject, //メールタイトル
      strBody, //本文
      {
        from: strFrom, //fromアドレス
        name: strSender //差出人
      }
    );
    
    /* メールの送信を記録 */
    mySheet.getRange(i,4).setValue("送信済み");
  }
}

ボタンにスクリプトを割り当てて出来上がり。

手順

  1. スプレッドシート「2020xxxx_サンプル一斉送信」をコピーして適当に名前変更
  2. 設定を入力
  3. 差出人メールアドレス
  4. 差出人
  5. 送信日
  6. 送信リストの入力
  7. メールアドレス
  8. タイトル
  9. 本文
  10. 「一斉送信する」を押下
  11. (一度のみ)認証の確認で「続行」を押下
  12. (一度のみ)自分のアカウントを選択
  13. (一度のみ)「許可」を押下
  14. 送信件数が表示されるので問題なければ「OK」を押下
  15. 「送信状況(自動入力)」に送信結果が表示される
  16. Gmailの送信済みから送信したメールを確認できる

注意事項

  • 誤送信防止のため「送信日」が当日でないと送信できません。
  • 空行はエラーとなるので、上に詰めたデータを作ること。
  • Gmailに設定しているメールアドレスからしか送れない。
  • 「送信状況(自動入力)」にすでに入力がある行は送信がスキップされます。
  • A~D列はプログラムで指定していますので列の追加は禁止です。
  • 1~6行もプログラムで指定していますので行の追加は禁止です。
  • F列以降は自由に使って問題ありません。

用法用量を守って正しくお使いください。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?