Google Apps Scriptでhtmlメール送信ツール作ってみた


はじめに

社内イベントのインビテーションとして、Gmailでhtmlメールを複数のメンバーに一斉送信したいという依頼を受け、非エンジニアの方でも簡単にhtmlメールを送れるようなツールを作成しました。

Google Apps Scriptとは

G Suiteプラットフォームでの軽量アプリケーション開発のためにGoogleが開発したスクリプトプラットフォームです。
スクリプトの言語は、JavaScriptがベースで、Googleが提供するサービス(スプレットシート、Gmailなど)と容易に連携できます。
利用する際は、Googleアカウントが必須となっています。

ツール概要

スプレッドシートで入力した送り先メールアドレス、CCメールアドレス、送信者メールアドレス、件名を取得し、htmlメールを送信。
※送信用のhtmlは別途用意。

送信手順

1.スプレッドシートに必要項目を入力

2.送信

スクリプトを開き、下記画像赤線の実行ボタンを押下。

コード

スクリプト

sendMail.gs
function sendMail() {

  /* 送信用情報をスプレッドシートから取得 */
  var mailSpreadsheet = SpreadsheetApp.openById('スプレッドシートID'); //メアド入力用スプレッドシート取得
  var mailSheet = mailSpreadsheet.getSheetByName('シート1'); //シート取得

  var mailLastRow = mailSheet.getLastRow(); //最終行数取得
  var arrayToAddress = mailSheet.getRange(2,1,mailLastRow-1,1).getValues(); //送信先メールアドレスリスト取得
  var toaddress = arrayToAddress.join(','); //配列をカンマ区切り文字列に変換

  var ccLastRow = mailSheet.getRange('B:B').getValues().filter(String).length; //CC入力行数取得
  if (ccLastRow == 1) { //CCのアドレスがなければ、CCアドレスを空にする。
    var ccAddress = ''
  }
  else {
    var arrayCcAddress = mailSheet.getRange(2,2,ccLastRow-1,1).getValues(); //CCメールアドレスリスト取得
    var ccAddress = arrayCcAddress.join(','); //配列をカンマ区切り文字列に変換
  }

  var fromAddress = mailSheet.getRange('C2').getValue(); //送信元メールアドレス取得

  var subject = mailSheet.getRange('D2').getValue(); //メール件名取得


  /* メールを送信 */
  var html = HtmlService.createHtmlOutputFromFile("test").getContent(); //送信用メールテンプレ取得
  GmailApp.sendEmail(
    toaddress, //宛先
    subject, //件名
    'お知らせ', //本文
    {
      from: fromAddress, //送り元
      cc: ccAddress, //CC
      htmlBody: html //mailテンプレ
    }
  );
}

※スプレッドシートIDには、スプレッドシートのURLのxxxxの部分を指定。
https://docs.google.com/spreadsheets/d/xxxx/

送信用メールテンプレ

test.html
<!DOCTYPE html>
<html>
  <body>
    test
  </body>
</html>

補足

今回は、送信タイミングが不定期だったため、作成しませんでしたが、
タイマーを用いての定期実行やスプレッドシートを開く等のアクションを起点とするトリガーを設定できるようです。
詳細は、下記参考資料をご確認ください。

参考資料