GoogleAppsScript(GAS)で、メールを送信する

概要

GoogleAppsScriptでは、テキストメールやHTMLメールを送ることができます。
まずは、テキストメールの送り方をお伝えします。

テキストメールの送り方

HTMLメールでない場合は、以下のようにMailApp.sendEmail()で送ることができます。

send_email.js
// 改行はあってもなくてもよい
MailApp.sendEmail(
  'メールアドレス',
  '件名',
  '本文'
);

改行を入れる場合は、\nで改行することができます。
(Windowsの場合は¥n)

send_email.js
MailApp.sendEmail(
  'メールアドレス',
  '件名',
  '本文\n本文(2行目)'
);

HTMLメールの送り方①

HTMLメールを送る場合は、少し書き方が変わります。

send_email.js
MailApp.sendEmail(
  'メールアドレス',
  '件名',
  'テキストメール用の文言',
  {htmlBody: '本文はココHTMLタグも使用可'}
);

※ 「テキストメール用の文言」の部分は基本的には使用されませんが、
iPhoneのメールアプリで見ると、プレビューとしてこの部分が表示されます。

HTMLメールの送り方②

変数にHTMLタグも含め全てを入れてもよいのですが、冗長なソースコードとなります。
そこで、HTMLファイルを作成し、それを読み込んでみます。

まず、HTMLを作成します。
スクリプトの編集画面において

googleappsscriptで新規ファイル作成

「ファイル」→「新規作成」→「HTMLファイル」で新規ファイルを作成できます。
ファイル名を聞かれるのでindex.htmlとしてください。

HTMLファイルはデフォルトで以下のようになっているので、

index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    
  </body>
</html>

<body></body>の間に好きなHTMLを書いてみてください。

その後、スクリプトを以下のように改変します。

send_html_email.js
// index.htmlから読み込み
var html = HtmlService.createHtmlOutputFromFile("index").getContent();
// メール送信
MailApp.sendEmail(
  'メールアドレス',
  '件名',
  '普通のメール',
  {htmlBody: html}
);

結果として、bodyタグの中が送信できていたらOKです。

HTMLメールの送り方③(メール内で変数を使用したい場合)

上記の方法を使う場合、変数を使用する際に困ってしまいます。
そこで、HTML内で変数を使用する方法を使います。
詳しい方には、PHPと同じようなものと言えば伝わると思います。

例として、GAS側で配列を準備し、それをindex.html側で読み込む、ということをやってみます。

先程作成した、index.htmlの中身を以下のように改変します。

index.html
<? for (var j=0; j < arr.length; j++) {?>
  <b><?=arr[j]?></b><br>
<? } ?>

中身としては単純で、arrの中身を一個ずつ取り出しています。
次に、GASのソースコードを以下のように編集します。

send_html_email.js
// ↑のindex.htmlを読み込む
var template_index = HtmlService.createTemplateFromFile('index');

// template_index.arrとすることで、
// htmlファイル内でarrという変数が使えるようになる。
template_index.arr = ["hoge", "huga", "hage"];

// 上で設定した変数の展開をし、メールで送る用にContentのみを取り出す。
html = template_index.evaluate().getContent();

// 送信
MailApp.sendEmail('メールアドレス', '件名', '普通のメール', {htmlBody: html});

以上のコードを実行すると、変数を利用した上でメールが送られていることがわかると思います。

参考サイト

HTMLに変数を入れる方法として、以下を参考とさせていただきました。
GoogleAppsScriptのHTMLServiceまとめ