マスタリング Google Apps ScriptGatsby logo
【ソースコード解説付き】Google Apps Scriptによるメール送信サンプル | マスタリング Google Apps Script

【ソースコード解説付き】Google Apps Scriptによるメール送信サンプル

GASを使ってメール送信する方法を解説します。また設定できる各種オプションの解説もしています。ソースコードの解説があるのでご自身の環境に合わせて設定を変更することができます。

Googleカレンダーから参加者を自動で取得したい

概要

Webブラウザやスマートフォンのアプリからメール送信可能です。 とはいえ、GASを使えば

  • Googleスプレッドシートの更新
  • Google Formへの入力完了

などに連携してメールを送ることができます。

連携部分については、別記事で解説します。 まずは、GASでメール送信する基本的な方法を抑えましょう。

想定した業務内容

今回は、お問い合わせフォームに入力があった時に、受け付け完了をユーザーに伝えるための、自動返信を想定します。 (本来はお問い合わせフォームの内容などをメールに記載しますが、今回のサンプルでは実装していません。)

ソースコード

メールアドレスを指定して、Gmailを送信するサンプルコードです。 スクリプトエディタで、mainを選択して実行します。

宛先:abc@example.com に、【株式会社〇〇】お問い合わせありがとうございます。 という件名で、メールを送信します。

function main() {
  const email = "abc@example.com";
  const customerName = "名無しの権兵衛";

  sendAutoReplayMail(email, customerName);
}

function sendAutoReplayMail(email, name) {
  // タイトル
  const subject = '【株式会社〇〇】お問い合わせありがとうございます。';
  
  // 本文
  const mailBody = `${name} 様

株式会社〇〇へお問い合わせ頂き、誠にありがとうございます。
下記内容を受付いたしました。
担当者より順次確認させて頂きますのでお待ちください。

なお返信には日数を要する可能性がございます。前もってご了承ください。 
`;
  
    // メール送信のオプション
    const options = {
      from: 'info@example.com',                                 // 送信もとのメールアドレス
      name: '【株式会社〇〇】お問い合わせありがとうございます。',        // メールタイトル
      cc: ['cc1@example.com', 'cc2@example.com'].join(","),     // cc
      bcc: ['bcc1@example.com', 'bcc2@example.com'].join(","),  // bcc
    };

    GmailApp.sendEmail(toEmail, subject, body, options);        // メールの送信
  }

ソースコードの解説

必須:メールの送信

GmailApp.sendEmail(toEmail, subject, body, options); の記述部分です。 このコードは、メール送信するためのコアになります。 プログラムに慣れていない方向けに説明しますが、下記は同じことを実現できます。

どのプログラムも実行結果は変わりません。 では、なぜtoEmailsubject といった変数に値を保持しておくのかというと、そのほうが人間が理解しやすいからです。 また、適宜必要なデータを変数に格納しておくことで、データを使い回す際にミスが少なくなります。

// 上記プログラムにおいて…
// この記述と
GmailApp.sendEmail(toEmail, subject, body, options);

// この記述は同じ動作をする
GmailApp.sendEmail("abc@example.com", "【株式会社〇〇】お問い合わせありがとうございます。", body, options);

// 横に長くなるので、適宜改行をいれても同じ動作をする
GmailApp.sendEmail(
  "abc@example.com",
  "【株式会社〇〇】お問い合わせありがとうございます。",
  body,
  options
);

必須:本文

body = ~ の部分です。 通常GASで文字列を定義する場合は、「"」or 「'」のペアで文字列を定義します。

// 文字列を定義する場合は 「"」 or 「'」 のペアで文字列を定義する
const doublQuoteName = "名無しの権兵衛";
const singleQuoteName = '名無しの権兵衛';

// これはNG(エラーになる)
// const singleAndDoubleQuoteName = "名無しの権兵衛';

「"」or 「'」のペアで文字列を定義する方法は改行を含んだ文字列を定義しにくいという特徴があります。「\n」(バックスラッシュ + n)で改行を表現しますので、文字列を+で連結することで改行文字列を表現できます。 複数改行があったり、改行だけの行があると見た目と出力が一致しないのでわかりにくいです。 そこで、サンプルのようにテンプレートリテラルを使って表現しています。

// 「\n」(バックスラッシュ + n) で改行できる
const newLineMailBody = "名無しの権兵衛様" + "\n" + "この度はお問い合わせありがとうございました。";

// ↓↓↓
// テンプレートリテラルを使うとスッキリ記述できる

const templateLiteralMailBody = `${name} 様

株式会社〇〇へお問い合わせ頂き、誠にありがとうございます。
下記内容を受付いたしました。
担当者より順次確認させて頂きますのでお待ちください。

なお返信には日数を要する可能性がございます。前もってご了承ください。 
`;

任意:BCC / CC

bccとccは任意です。不要な場合はコードから削ってください。 なお、bcc / cc の仕様的には、メールアドレスを「,」カンマ区切りした文字列を設定します。 このままではわかりにくいので、サンプルコードでは配列定義した文字列をjoinしています。

    // メール送信のオプション
    const options = {
      from: 'info@example.com',                                 // 送信もとのメールアドレス
      name: '【株式会社〇〇】お問い合わせありがとうございます。',        // メールタイトル
      cc: ['cc1@example.com', 'cc2@example.com'].join(","),     // cc
      bcc: ['bcc1@example.com', 'bcc2@example.com'].join(","),  // bcc
    };

↓↓↓
  
    // メール送信のオプション
    const options = {
      from: 'info@example.com',                                 // 送信もとのメールアドレス
      name: '【株式会社〇〇】お問い合わせありがとうございます。',        // メールタイトル
    };

まとめ

GASでメール送信するかんたんなサンプルを解説しました。

今回のサンプルでわからないことがある場合は、JavaScriptそのものの知識が不足している可能性もあります。 GASの解説記事の他に、JavaScriptの解説も紹介予定ですので、お待ち下さい。

参考文献

  • GmailApp
    • Google公式のドキュメントです。
© mastering-gas.com 2023