Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【初心者向け!GAS基本操作】GASでメールを送信する方法

Google Apps Script send email

こんにちは!
Yuki (@yukibnb) です。

今回はGoogle Apps Script (GAS) を使ってメールを送信する方法を紹介します。

基本をしっかり押さえることができると、スプレッドシートやGoogleフォームと連動してメール送信するといった応用もスムーズに理解できるようになります。

基本操作に加え使用上のコツも紹介しますので参考になればうれしいです。

では早速見ていきましょう!

 

コピペでOK!GASでメールを送信する方法

基本操作: sendEmailメソッドでメールを送信しよう

Google Apps Script sendEmail

メールを送る方法はとてもシンプルです。

GmailAppクラスのsendEmailメソッドを使って、括弧内に宛先、件名、本文を入力するだけでOKです。

CCやBCCなどのオプションを指定することもできますが、まずはオプションを使用しない基本操作を見てみましょう。

  • 宛先: test@sample.com
  • 件名: 【テスト】
  • 本文: こんにちは!

このような宛先、件名、本文のメールを送りたい場合、以下のように記述します。
 

function email() {
  GmailApp.sendEmail("test@sample.com", "【テスト】", "こんにちは");
}

Google Apps Script Gmail

関数emailを実行するとメールを送信することができます。すごくシンプルで簡単ですね。(今回関数名をemailとしましたがお好きな関数名をつけて頂いて構いません)

これだけでメール送信の基本は完了です。

次に実際に使用する上でのコツをいくつかご紹介します。

 

memo

関数の初回実行時に承認を求められます。承認の方法は以下記事を参照ください。
【もう迷わない!】GAS初回実行時の承認方法

 

コツ: 宛先、件名、本文に変数を使用する

GmailApp.sendEmail("test@sample.com", "【テスト】", "こんにちは");

このようにsendEmailメソッドの括弧内に宛先、件名、本文を直接文字列で入力しても問題ありません。

しかし実際に使用する際は宛先、件名、本文それぞれの変数を作成し、それらの変数を括弧内に入力するのが一般的です。

let recipient = "test@sample.com";
let subject = "【テスト】";
let body = "こんにちは!";

GmailApp.sendEmail(recipient, subject, body);

 
どちらの方法でも送信されるメールは同じですが、変数を使用した方がカスタマイズしやすく便利です。

 

コツ: "\n"で改行する

Google Apps Script email

本文内で改行したい場合、改行箇所に\nを入力します。この画像のように改行したい場合、本文に該当する変数bodyを以下のように記述します。

let recipient = "test@sample.com";
let subject = "【テスト】";
let body = "おはよう\nこんにちは\n\nこんばんは";

GmailApp.sendEmail(recipient, subject, body);

複数行連続で改行したい場合、\n\nというように\nを複数個連続して記述すればOKです。

 

コツ: 変数bodyをわかりやすく記述する

送信したいメールの本文が長い場合、変数bodyの中身も長くなりスクリプトエディタ上での視認性が落ちてしまいます。

スクリプトエディタ上でも実際の受信メールのように確認したい場合、以下のように変数bodyを記述すると見やすくなります。

let recipient = "test@sample.com";
let subject = "【テスト】";
let body = "おはよう\n"
         + "こんにちは\n"
         + "\n"
         +"こんばんは";  //セミコロンを忘れずに

GmailApp.sendEmail(recipient, subject, body);

 

コツ: 宛先、件名、本文の変数内でさらに別の変数を使用する

これまで紹介した宛先、件名、本文はいずれも変数の内容が固定されています。

定期的に決まった宛先に同じ内容のメールを送信したい場合それでも問題ありませんが、宛先や件名、本文を動的に変化させたいことも多々あります。

そのような場合、変数recipient、変数subject、変数body内でさらに別の変数を使用すると便利です。

let applicants = [["田中", "tanaka@sample.com", "上級者コース"],
                  ["鈴木", "suzuki@test.com", "無料トライアル"],
                  ["山田", "yamada@example.com", "中級コース"]];

let recipient = applicants[2][1];  //yamada@example.com
let subject = "【お申し込み完了】" + applicants[2][2]; //中級コース
let body = applicants[2][0] + "様\n" //山田
           + "\n"
           + "ご応募ありがとうございます。"
           + "\n"
           + "応募コース: " + applicants[2][2]; //中級コース

GmailApp.sendEmail(recipient, subject, body);

Google Apps Script Email

応募者名、メールアドレス、応募コースを二次元配列で格納した変数applicantsが存在するとします。

山田さん宛てに中級コースへの申し込み完了メールを送信したい場合、変数applicantsの中にある山田さんの情報を変数recipient、変数subject、変数body内にそれぞれ記述します。

  • applicants[2][0]: 山田
  • applicants[2][1]: yamada@example.com
  • applicants[2][2]: 中級コース

memo

「どうしてapplicants[2][0]と書くと『山田』が取り出せるの?」という方は、二次元配列の要素の取り出し方を詳しく図入りで解説した以下記事を参照ください。
【超初心者向け!】GASの二次元配列をやさしく図入り解説!

 
二次元配列が出てくると少しややこしく感じるかもしれませんが、メールの宛先や内容を動的に変更したい場合にとても便利です。

実務では二次元配列に加えfor文などのループも使用し、一人ずつ連続でメールを送信することがよくあります。(具体例や解説は別記事にて詳しく紹介したいと思います。)

メール送信の基本操作とコツは以上です。

続いてCCやBCCなどのオプションの使用方法を見てみましょう。

 

オプションの使用方法

オプションで指定できる項目

Google Apps Script sendEmail

CCやBCCをオプションで指定できるとお伝えしましたが、それ以外にも指定できる項目は以下のように多くあります。

 

プロパティ名 内容
attachments 添付ファイル
bcc BCC
cc CC
from 送信元メールアドレス
グループメールアドレスから送りたい場合などに使用します。
htmlBody HTMLメール
inlineImages HTMLメール内でインラインイメージを表示します。
htmlBodyと一緒に使用します。
name メールの送信者名
noReply 送信元メールアドレスを「noreply@mycompany.com」というように返信不可とわかるように変更します。メルマガや通知メールなどでよく見るやつですね。
※このオプションはGoogle Workspaceアカウントでしか使用できません。
replyTo 受信者がメールに返信する際の返信先メールアドレス

 
本記事では使用頻度が高く且つ簡単に記述できるCC (cc)、BCC (bcc)、送信者名 (name)、返信不可 (noReply) の4つを紹介します。

 

オプションはオブジェクトで記述する

Google Apps Script Email

基本操作で紹介した宛先、件名、本文はすべて文字列でしたが、オプションはオブジェクトで記述します。

また宛先、件名、本文と同じようにsendEmailメソッドの括弧内に直接記述するのではなく、先にオプションの変数を作成し括弧内に変数を記述するのが一般的です。

let recipient = "yamada@example.com";
let subject = "【テスト】";
let body = "こんにちは!";
let options = {
  cc: "nomura@mycompany.com",
  bcc: "kimura@mycompany.com"
};

GmailApp.sendEmail(recipient, subject, body, options);

変数options内にCCとBCCをオブジェクトで格納し、sendEmailの括弧内に記述しました。

関数を実行すると山田さん宛てのメールのCCに野村さん、BCCに木村さんを含めることができます。

オプションはオブジェクトと覚えておいてください。

では各オプションを見ていきましょう。

 

注意

オプション内のプロパティ名は大文字小文字が区別されます。
以下のようにプロパティ名をCCBCCと大文字で記述するとCCとBCCをメールに含めることができませんのでご注意ください。

let options = {
  CC: "nomura@mycompany.com",
  BCC: "kimura@mycompany.com"
};

 

CCの記述方法

let options = {
  cc: "nomura@mycompany.com",
};

GmailApp.sendEmail(recipient, subject, body, options);

CCの記述方法はシンプルです。

オブジェクトのプロパティ名をccとし、値にメールアドレスを文字列で入力します。

 

BCCの記述方法

let options = {
  bcc: "kimura@mycompany.com"
};

GmailApp.sendEmail(recipient, subject, body, options);

BCCの記述方法もCCと同じくシンプルです。

オブジェクトのプロパティ名をbccとし、値にメールアドレスを文字列で入力します。

 

送信者名の記述方法

let options = {
  name: "◎◎イベント実行委員会"
};

GmailApp.sendEmail(recipient, subject, body, options);

送信者名を設定すると、誰からメールが届いたか受信者が判断しやすくなります。

オブジェクトのプロパティ名をnameとし、値に送信者名を文字列で入力します。

受信者側にはこのように表示されます。

Google Apps Script Email

 

送信不可の記述方法

let options = {
  noReply: true
};

GmailApp.sendEmail(recipient, subject, body, options);

返信不可を設定すると、送信者のメールアドレスが「noreply@mycompany.com」というように表示されます。

返信を受け付けたくないメルマガや自動通知メールなどに設定すると便利です。

オブジェクトのプロパティ名をnoReplyとし、値にtrueと記述します。

受信者側にはこのように表示されます。

Google Apps Script Email

注意

noReplyはGoogle Workspaceアカウントでのみ使用できます。

 

複数のオプションを同時使用する方法

let options = {
  cc: "nomura@mycompany.com", //カンマを忘れずに
  bcc: "kimura@mycompany.com", //カンマを忘れずに
  name: "ABC株式会社"
};

GmailApp.sendEmail(recipient, subject, body, options);

複数のオプションを同時使用したい場合、変数opitons内でこのように記述します。

 
 
CC (cc)、BCC (bcc)、送信者名 (name)、返信不可 (noReply) の4つのオプションの使用方法を紹介しました。

オプションを使うとメール活用の幅が広がります。

今回紹介した4つ以外のオプションについては、いずれ別記事で紹介したいと思います。

 

その他便利機能

複数名に送信する

let recipient = "yamada@example.com, tanaka@example.com";
let subject = "【テスト】";
let body = "こんにちは!";
let options = {
  cc: "nomura@mycompany.com, suzuki@mycompany.com, miyano@mycompany.com",
  bcc: "kimura@mycompany.com, takada@mycompany.com"
};

GmailApp.sendEmail(recipient, subject, body, options);

宛先、CC、BCCを複数名に送信したい場合、メールアドレスをカンマで区切った文字列で記述します。

 

メールアドレスのリストが配列の場合

もしメールアドレスのリストが配列で用意されている場合、配列に対してjoinメソッドを使用して文字列を作成します。

joinメソッドを使うと、配列の各要素を連結して文字列を作成できます。

join()の括弧内に区切り文字を入力すると各要素を区切り文字で連結することができます。(例: 配列.join("&"))

括弧に何も入力しなければ各要素をカンマで連結します。今回はカンマで連結したいので括弧内には何も入力しません。

memo

joinメソッドの詳しい解説は以下記事をご覧ください。
【簡単!】GASで配列の各要素を連結して文字列を作成する方法

let emailList = ["yamada@example.com", "tanaka@example.com"];
let recipient = emailList.join();
let subject = "【テスト】";
let body = "こんにちは!";

GmailApp.sendEmail(recipient, subject, body);

変数emailListにメールアドレスが配列形式で格納されています。

emailList.join()と記述すると、emailList内の各要素(メールアドレス)をカンマで連結し文字列を作成します。

そしてそれを変数recipientに格納します。

変数recipientの中は"yamada@example.com,tanaka@example.com"という文字列になっています。

memo

宛先が文字列ではなく配列でも実際送信はできます。
ただし公式リファレンス (英語)では宛先のデータ型は文字列と明記されているため、文字列に変換することをおすすめします。

 

まとめ

Google Apps Script (GAS) を使ってメールを送信する方法を紹介しました。

簡単なメールであれば宛先、件名、本文をさっと記述するだけで送信できるので便利です。

今回紹介した基本とコツをつかむと、以下のような応用もスムーズに理解できるようになります。

  • スプレッドシートのリストからメール送信
  • Googleフォームの回答者にメール送信
  • メールにファイルを添付
  • HTMLメールで見栄えアップ

これらの活用方法は当記事でも将来紹介したいと考えていますので是非ご期待ください!