LoginSignup
1
3

More than 3 years have passed since last update.

イベント招待メール送信の半自動化ばなし【vol.1】

Last updated at Posted at 2019-05-18

株式会社オズビジョンのユッコ (@terra_yucco) です。
日々細かい記事を上げていますが、その中でもそれなりに登場する Google Apps Script。
これは業務だけではなく、プライベートのサークル活動での事務活動を効率化するのにも使えています。今日はその中から、イベントご招待メールの送信を半自動化しているコードを共有します。

イベントご招待メール送信を半自動化したい

前提

  • 大体、半年に 1 回イベントご招待があり、そのご案内をメールで送付している
  • メールをプリントアウトして持参いただければ入場できる仕組み
  • 次以降のご招待のため、来てくださった方の情報が必要
    • 要するに何らかの差し込みが必要

Outlook とかの差し込み機能でもうまくいくのかもしれませんが、普段使っていないので使い方がわかりません。
顧客リストはパスワードをかけたローカル Excel で管理しているので、コピペしたら普通に扱える Spreadsheet がいいのではないかと思い GAS にしました。

シート

  • イベント自体はどんどん回数表記が増えるタイプ
  • 送付先ごとに ID を振っている
  • 複数回ツールが動いても重複送信はできるだけしないように

ということで以下のような項目分けになっています。
チープ感満載ですが「メール送信」オブジェクトに次に記載するスクリプトが割り当ててあります。

image.png

コード

工夫してある点としては、上にも書きましたが、メール送信が終わったらフラグを立て、同じシートで複数回送信することが無いようにしてある点となります。
※実際この記事を書いているときも誤爆しそうになりました。

function sendInvitationMail() {

  var mySheet = SpreadsheetApp.getActiveSheet();
  var rowSheet = mySheet.getDataRange().getLastRow();
  var docMail = DocumentApp.openById("【ドキュメントID】"); //ドキュメントをIDで取得
  var strDoc = docMail.getBody().getText(); //ドキュメントの内容を取得

  /**
   * 1行目はヘッダ
   * 2行目以降データがなくなるまで差し込む
   */
  for (var i = 2; i <= rowSheet; i++) {
    var strNumber = mySheet.getRange(i, 1).getValue(); // 回次
    var strID = mySheet.getRange(i, 2).getValue(); // ID
    var strEmail = mySheet.getRange(i, 3).getValue(); // メールアドレス
    var isSent = mySheet.getRange(i, 4).getValue(); // 送信済みか
    var strBody=strDoc.replace(/{ID}/g, strID);
    if (isSent != "") {
      Logger.log(strID + ": skipped");
      continue;
    }

    // メール件名
    var strSubject = "第{Number}回【イベント名】へのご招待".replace(/{Number}/g, strNumber) + " (" + strID + ")";
    var strFrom = "【From メールアドレス】"; //From
    var strSender = "【From 表示名】"; //差出人

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

このあたりもいつかもう少しブラッシュアップしたいのですが、ちょっとスクリプトが書けるだけで、プライベート活動も効率化することができるよ、という話でした。

1
3
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
1
3