こんにちは!
Yuki (@yukibnb) です。
今回はGoogle Apps Script (GAS) を使ってメールを送信する方法を紹介します。
基本をしっかり押さえることができると、スプレッドシートやGoogleフォームと連動してメール送信するといった応用もスムーズに理解できるようになります。
基本操作に加え使用上のコツも紹介しますので参考になればうれしいです。
では早速見ていきましょう!
コピペでOK!GASでメールを送信する方法
基本操作: sendEmailメソッドでメールを送信しよう
メールを送る方法はとてもシンプルです。
GmailApp
クラスのsendEmail
メソッドを使って、括弧内に宛先、件名、本文を入力するだけでOKです。
CCやBCCなどのオプションを指定することもできますが、まずはオプションを使用しない基本操作を見てみましょう。
- 宛先: test@sample.com
- 件名: 【テスト】
- 本文: こんにちは!
このような宛先、件名、本文のメールを送りたい場合、以下のように記述します。
function email() { GmailApp.sendEmail("test@sample.com", "【テスト】", "こんにちは"); }
関数email
を実行するとメールを送信することができます。すごくシンプルで簡単ですね。(今回関数名をemail
としましたがお好きな関数名をつけて頂いて構いません)
これだけでメール送信の基本は完了です。
次に実際に使用する上でのコツをいくつかご紹介します。
関数の初回実行時に承認を求められます。承認の方法は以下記事を参照ください。
【もう迷わない!】GAS初回実行時の承認方法
コツ: 宛先、件名、本文に変数を使用する
GmailApp.sendEmail("test@sample.com", "【テスト】", "こんにちは");
このようにsendEmail
メソッドの括弧内に宛先、件名、本文を直接文字列で入力しても問題ありません。
しかし実際に使用する際は宛先、件名、本文それぞれの変数を作成し、それらの変数を括弧内に入力するのが一般的です。
let recipient = "test@sample.com"; let subject = "【テスト】"; let body = "こんにちは!"; GmailApp.sendEmail(recipient, subject, body);
どちらの方法でも送信されるメールは同じですが、変数を使用した方がカスタマイズしやすく便利です。
コツ: "\n"で改行する
本文内で改行したい場合、改行箇所に\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);
応募者名、メールアドレス、応募コースを二次元配列で格納した変数applicants
が存在するとします。
山田さん宛てに中級コースへの申し込み完了メールを送信したい場合、変数applicants
の中にある山田さんの情報を変数recipient
、変数subject
、変数body
内にそれぞれ記述します。
applicants[2][0]
: 山田applicants[2][1]
: yamada@example.comapplicants[2][2]
: 中級コース
「どうしてapplicants[2][0]
と書くと『山田』が取り出せるの?」という方は、二次元配列の要素の取り出し方を詳しく図入りで解説した以下記事を参照ください。
【超初心者向け!】GASの二次元配列をやさしく図入り解説!
二次元配列が出てくると少しややこしく感じるかもしれませんが、メールの宛先や内容を動的に変更したい場合にとても便利です。
実務では二次元配列に加えfor文などのループも使用し、一人ずつ連続でメールを送信することがよくあります。(具体例や解説は別記事にて詳しく紹介したいと思います。)
メール送信の基本操作とコツは以上です。
続いてCCやBCCなどのオプションの使用方法を見てみましょう。
オプションの使用方法
オプションで指定できる項目
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つを紹介します。
オプションはオブジェクトで記述する
基本操作で紹介した宛先、件名、本文はすべて文字列でしたが、オプションはオブジェクトで記述します。
また宛先、件名、本文と同じように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に木村さんを含めることができます。
オプションはオブジェクトと覚えておいてください。
では各オプションを見ていきましょう。
オプション内のプロパティ名は大文字小文字が区別されます。
以下のようにプロパティ名をCC
、BCC
と大文字で記述すると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
とし、値に送信者名を文字列で入力します。
受信者側にはこのように表示されます。
送信不可の記述方法
let options = { noReply: true }; GmailApp.sendEmail(recipient, subject, body, options);
返信不可を設定すると、送信者のメールアドレスが「noreply@mycompany.com」というように表示されます。
返信を受け付けたくないメルマガや自動通知メールなどに設定すると便利です。
オブジェクトのプロパティ名をnoReply
とし、値にtrue
と記述します。
受信者側にはこのように表示されます。
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("&")
)
括弧に何も入力しなければ各要素をカンマで連結します。今回はカンマで連結したいので括弧内には何も入力しません。
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"
という文字列になっています。
宛先が文字列ではなく配列でも実際送信はできます。
ただし公式リファレンス (英語)では宛先のデータ型は文字列と明記されているため、文字列に変換することをおすすめします。
まとめ
Google Apps Script (GAS) を使ってメールを送信する方法を紹介しました。
簡単なメールであれば宛先、件名、本文をさっと記述するだけで送信できるので便利です。
今回紹介した基本とコツをつかむと、以下のような応用もスムーズに理解できるようになります。
- スプレッドシートのリストからメール送信
- Googleフォームの回答者にメール送信
- メールにファイルを添付
- HTMLメールで見栄えアップ
これらの活用方法は当記事でも将来紹介したいと考えていますので是非ご期待ください!