Posted at

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


はじめに

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


Google Apps Scriptとは

G Suiteプラットフォームでの軽量アプリケーション開発のためにGoogleが開発したスクリプトプラットフォームです。

スクリプトの言語は、JavaScriptがベースで、Googleが提供するサービス(スプレットシート、Gmailなど)と容易に連携できます。

利用する際は、Googleアカウントが必須となっています。


ツール概要

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

※送信用のhtmlは別途用意。


送信手順


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

スプレットシート.PNG


2.送信

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

スクリプト2.PNG


コード


スクリプト


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>


補足

今回は、送信タイミングが不定期だったため、作成しませんでしたが、

タイマーを用いての定期実行やスプレッドシートを開く等のアクションを起点とするトリガーを設定できるようです。

詳細は、下記参考資料をご確認ください。


参考資料