GAS(Google Apps Script)とは、Googleが開発したプログラミング言語で、ExcelでいうVBA(マクロ)みたいなものです。
そんなGASを使えば、簡単にメールを送信することができます。
GASでメール送信を行うには、MailAppクラス、もしくはGmailAppクラスを使用します。本記事では、その両クラスの使用方法を説明します。
MailAppクラスはメール送信の機能に特化しているのに対し、GmailAppクラスは、下書き作成、既読処理、アーカイブ移動など、Gmailアプリに備わる機能が実装されています。
メールの送信に関する違いのみを言うと、GmailAppだと送信元アドレス(From)を変更することができます。
送信元アドレスを自分のアドレス以外にしたい場合は、GmailAppを使用してください。
もっと簡単に教えて!?という方はこちら!
-
-
参考【プログラミング未経験者向け】たった3行でメール送信するプログラムを書く
こちらの記事、完全プログラミング未経験・初心者向けです!プログラミングと聞くと、一気に心を閉ざす人は多いのではないでしょうか!?僕自身もその経験がありますが、意外とプログラミングは難しくない、そして実は楽しいんです!まずは、3行のプログラムを書いて、プログラミングに触れてみましょう!
続きを見る
目次
MailApp
MailAppクラスに用意された関数は以下の5つです。
- sendEmail(message)
- sendEmail(recipient, subject, body)
- sendEmail(recipient, subject, body, options)
- sendEmail(to, replyTo, subject, body)
- getRemainingDailyQuota()
sendEmail(message)
関数名の通り、メールの送信を担ってくれる関数です。他4つのsendEmai()の中で、1番柔軟性のある記述形式です。
戻り値は「Void」で、引数の「message」は、JavaScript形式の文字列です。メールの本文ではないので、注意してください。
「message」に使用できる拡張パラメータは以下の11個です。
・to(String型)
宛先アドレスです。複数アドレスの場合は、カンマで区切るか、配列を渡します。
・cc(String型)
ccアドレスです。複数アドレスの場合は、カンマで区切るか、配列を渡します。
・bcc(String型)
bccアドレスです。複数アドレスの場合は、カンマで区切るか、配列を渡します。
・subject(String型)
件名です。
・body(String型)
本文です。htmlBodyを使用する場合は、bodyは無視されます。
・htmlBody(String型)
html本文です。HTML形式で本文を作成できます。
・inlineImages(Object型)
インライン画像です。htmlBody内で<img src = "cid:imageKey">を定義し、BlobのKey名をimgeKeyに指定すると、画像の表示が可能です。詳しくはサンプル2を参照してください。
・attachments(BlobSource[]型)
添付ファイルです。Web上のファイルか、Gドライブ上のファイルが対象です。
・name(String型)
差出人名です。指定しないと、Googleアカウントのユーザ名が設定されます。
・replyTo(String型)
返信先アドレスです。noReplyがTrueだと無視されます。
・noReply(Boolean型)
trueにすると、返信ができなくなります。GoogleWorkspaceアカウントでのみ使用可能です。
以下に2つのサンプルコードを記述しました。ファイルIDやメールアドレスなどの各パラメータはアレンジしてください!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function sendMail(){ var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); var blob = Utilities.newBlob('Hello World', 'text/html', 'my_document.html'); var message = { to:"to@test.com", cc:"cc@test.com", bcc:"bcc@test.com", subject:"サンプルメール1", body:"サンプルメール1本文", attachments:[file.getAs(MimeType.PDF), blob], name:"", noreply:true } MailApp.sendEmail(message); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
function sendMail2(){ var googleLogoUrl = "http://www.google.com/intl/en_com/images/srpr/logo3w.png"; var youtubeLogoUrl = "https://developers.google.com/youtube/images/YouTube_logo_standard_white.png"; var googleLogoBlob = UrlFetchApp .fetch(googleLogoUrl) .getBlob() .setName("googleLogoBlob"); var youtubeLogoBlob = UrlFetchApp .fetch(youtubeLogoUrl) .getBlob() .setName("youtubeLogoBlob"); var message2 = { to:"to@test.com,to2@test.com", cc:"cc@test.com,cc2@test.com", bcc:"bcc@test.com,bcc2@test.com", subject:"サンプルメール2", htmlBody: "サンプルメール2本文<br>" +"<img src='cid:googleLogo'><br>" +"<img src='cid:youtubeLogo'>", inlineImages: { googleLogo: googleLogoBlob, youtubeLogo: youtubeLogoBlob }, name:"", replyTo:"replyto@test.com" } MailApp.sendEmail(message2); } |
sendEmail(recipient, subject, body)
基本的にsendEmail(message)と同じ内容で、引数のパラメータが変わっただけです。
「recipient」は、カンマ区切りの宛先アドレス(to)のことです。カンマで区切ることで複数のアドレスを指定できます。
「subject」「body」にはそれぞれ、件名と本文が入ります。
1 2 3 4 5 |
function sendMail3(){ MailApp.sendEmail("recipient@test.com", "サンプルメール3", "サンプルメール3本文"); } |
sendEmail(recipient, subject, body, options)
引数の最後に「options」が指定できるようになります。オプションは、sendEmail(message)からto、subject、bodyを除いた8個です。
以下サンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function sendMail4(){ var recipient = "recipient@test.com"; var subject = "サンプルメール4"; var body = "サンプルメール4本文"; var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); var blob = Utilities.newBlob('Hello World', 'text/html', 'my_document.html'); var option = { cc:"cc@test.com", bcc:"bcc@test.com", attachments:[file.getAs(MimeType.PDF), blob], name:"", noreply:true } MailApp.sendEmail(recipient, subject, body, option); } |
sendEmail(to, replyTo, subject, body)
同じく引数のパラメータが変わっただけです。「to」=「recipient」でカンマ区切りのアドレスです。
「replyTo」には、返信先アドレスを指定します。
1 2 3 4 5 6 |
function sendMail5(){ MailApp.sendEmail("recipient@test.com", "replyTo@test.com", "サンプルメール5", "サンプルメール5本文"); } |
getRemainingDailyQuota()
getRemainingDailyQuota()は、メールの送信を行う関数ではないですが、その日に送信できるメール数を「Integer型」で取得します。
Quotas for Google Servicesによると、GASを使用したメール送信数には制限があります。
通常アカウントの場合は1日100通、Google Workspaceアカウント(旧G Suite※)の場合は、1500通までです。
※2020年10月6日に「G Suite」から「Google Workspace」にリブランディングされました。
他にも本文サイズや添付ファイルサイズ、URL長さなど、メール送信の制限項目がいくつもあります。無制限ではないことを覚えときましょう。
GmailApp
GmilAppクラスには多くの機能が用意されていますが、メール送信を行う関数は以下の2つです。
- sendEmail(recipient, subject, body)
- sendEmail(recipient, subject, body, options)
sendEmail(recipient, subject, body)
MailAppと同様に、「recipient」はカンマ区切りの宛先アドレス(to)のことです。カンマで区切ることで複数のアドレスを指定できます。
「subject」「body」にはそれぞれ、件名と本文が入ります。
1 2 3 4 5 |
function sendMail(){ GmailApp.sendEmail("recipient@test.com", "サンプルメール1", "サンプルメール1本文"); } |
sendEmail(recipient, subject, body, options)
MailAppと同様、引数の最後に「options」が指定できるようになります。「options」に使用できる拡張パラメータは、以下の9個です。
・cc(String型)
ccアドレスです。複数アドレスの場合は、カンマで区切るか、配列を渡します。
・bcc(String型)
bccアドレスです。複数アドレスの場合は、カンマで区切るか、配列を渡します。
・htmlBody(String型)
html本文です。HTML形式で本文を作成できます。
・inlineImages(Object型)
インライン画像です。htmlBody内で<img src = "cid:imageKey">を定義し、BlobのKey名をimgeKeyに指定すると、画像の表示が可能です。詳しくはサンプル3を参照してください。
・attachments(BlobSource[]型)
添付ファイルです。Web上のファイルか、Gドライブ上のファイルが対象です。
・from(String型)
送信アドレスです。MailAppでは使用できません。
・name(String型)
差出人名です。Googleアカウントのユーザ名が設定されます。
・replyTo(String型)
返信先アドレスです。noReplyがTrueだと無視されます。
・noReply(Boolean型)
trueにすると、返信ができなくなります。GoogleWorkspaceアカウントでのみ使用可能です。
以下に2つのサンプルコードを記述しました。ファイルIDや各パラメータは自由に変更して下さい!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function sendMail2(){ var recipient = "recipient@test.com"; var subject = "サンプルメール2"; var body = "サンプルメール本文2"; var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); var blob = Utilities.newBlob('Hello World', 'text/html', 'my_document.html'); var option = { cc:"cc@test.com", bcc:"bcc@test.com", attachments:[file.getAs(MimeType.PDF), blob], from:"from@test.com", name:"", noreply:true } GmailApp.sendEmail(recipient, subject, body, option); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
function sendMail3(){ var recipient = "recipient@test.com"; var subject = "サンプルメール3"; var body = "サンプルメール本文3"; var googleLogoUrl = "http://www.google.com/intl/en_com/images/srpr/logo3w.png"; var youtubeLogoUrl = "https://developers.google.com/youtube/images/YouTube_logo_standard_white.png"; var googleLogoBlob = UrlFetchApp .fetch(googleLogoUrl) .getBlob() .setName("googleLogoBlob"); var youtubeLogoBlob = UrlFetchApp .fetch(youtubeLogoUrl) .getBlob() .setName("youtubeLogoBlob"); var option2 = { cc:"cc@test.com,cc2@test.com", bcc:"bcc@test.com,bcc2@test.com", htmlBody: "サンプルメール2本文<br>" +"<img src='cid:googleLogo'><br>" +"<img src='cid:youtubeLogo'>", inlineImages: { googleLogo: googleLogoBlob, youtubeLogo: youtubeLogoBlob }, from:"from@test.com", name:"", replyTo:"replyto@test.com" } GmailApp.sendEmail(recipient, subject, body, option2); } |
おわりに
以上です。グーグルアカウントさえ持っていれば、誰でも簡単にメールが送れるので、GASは非常に便利です。プログラミングに全く触れたことのない人も、是非試してみてください!
また、GmailAppで無効な宛先アドレス使用した場合や、添付ファイルが存在しない場合はエラーになってしまうので、注意して下さい。
お疲れ様でした!
-
-
参考【知っとくとお得◎】メール設定で今後困らない知識を5分で理解する
OutlookやiPhoneでメールアカウントを追加したい時、SMTP、POP3、IMAP、SSLなどの言葉が出てきます。数年間意味が分からないまま、無心で設定を行っていました(笑)が、いざ勉強してみると簡単じゃん!!ということで、忘備録もかねて、メールの設定項目と仕組み・流れを簡単に説明していきたいと思います。
続きを見る