こんにちは、ばばーるです。
前回のおさらい
前回はsendEmailのオプションのhtmlBodyについてご紹介しました。
- htmlBodyオプションを使うと文章をhtml表現で整えることができる
その際に、Bodyは空白にしておく
文章は+= もしくは + でつなげることができる
今回はsendEmailのパラメーターを使ってメールを送信する方法についてご紹介しました。
パラメータ一覧
名前 | 型 | 表現 |
attachments | Blobsource[] / バイナリデータ | 電子メールで送信できるファイル。Googleスプレッドシートや、PDFや色々なデータが使用できます。 |
bcc | String / 文字列 | BCCの宛先 |
cc | String / 文字列 | CCの宛先 |
htmlBody | String / 文字列 | 設定されている場合、HTMLを使用できます。メールにインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。 |
inlineImages | Object / オブジェクト型 | htmlBodyが使用された場合に、画像への参照が<img src = “cid:imageKey” />というhtml表現を使ってメールに貼り付けることができます。 |
name | String / 文字列 | 送信者の名前を表現できます。 |
noReply | Boolean / ブーリアン型 | TrueかFalseを入力すると、送信者の名前がnoReplyで表現されます。 |
replyTo | String / 文字列 | 受信者が返信すると気に、宛先を送信者以外に設定できます。 |
こんなメール

こんな感じのメールを毎週送りたいんだよね。


あっ無理だ。
ギブ。GAS教えて。

考えないんかい!!!
function sendEmail() {
const to = '送信先のメールアドレス'; //1行目
const subject = '提出書類管理シート'; //2行目
const body = ''; //3行目
let html = 'チームメンバーへ<br><br>'; //4行目
html += 'お疲れ様です。<br>'; //5行目
html += '<a href="スプレッドシートのURL">提出書類管理シート</a>を送付いたします。<br>'; //6行目
html += '本日中に内容を読んで、'; //7行目
html += '<strong><u>納期が送れそうな場合は必ずご一報ください。</u></strong><br><br>'; //8行目
html += '何かわからないことがありましたらご連絡ください。<br>'; //9行目
html += 'Zoo株式会社<br>'; //10行目
html += '書類管理グループ グループ長<br>'; //11行目
html += 'キリン部長<br>'; //12行目
const id = '画像が保存されているドライブのid'; //13行目
const image = DriveApp.getFilesByName('logo.jpeg').next(); //14行目
html += "<img src='cid:logo'>"; //15行目
GmailApp.sendEmail(to, subject, body, //16行目
{htmlBody : html, //17行目
inlineImages : {logo: image.getBlob()}, //18行目
name: 'キリン部長'}); //19行目
}

う〜ん。前回のhtmlの説明と違うのは…
6、8、13〜15行目と…17~19行目か
html表現(6&8行目)
<a href=”スプレッドシートのURL”>提出書類管理シート</a>はURLのリンクを貼ることができます。

<strong><u>納期が送れそうな場合は必ずご一報ください。</u></strong>の
- <strong> </strong>は文字を強調します。
- </u>は下線を引きます。

画像をメールに貼り付ける (13~15行目 +と18行目)
const id = '画像が保存されているドライブのid'; //13行目
const image = DriveApp.getFilesByName('logo.jpeg').next(); //14行目
html += "<img src='cid:logo'>"; //15行目
inlineImages : {logo: image.getBlob()}, //18行目
13行目: ドライブのidを設定します。
14行目: DriveAppでGoogleドライブのアプリにアクセスします
.getFilesByName()で”logo.jpeg”という名前のファイルを指定して
.next()でファイル自体にアクセスします
18行目: inlineImagesはパラメータ一覧に書いてある通り、「htmlBodyで画像への参照が<img src = “cid:imageKey” />というhtml表現を使って画像をメールに貼り付けます。」このメールでは14行目で取得したロゴの画像データを.getBlob()で0と1のバイナリーデータとして取得します。imageKey名をlogoとして設定します。
15行目: <img src = imageKey> として画像をメールに貼り付けます。

パラメータ name (19行目)
GmailApp.sendEmail(to, subject, body, //16行目
{htmlBody : html, //17行目
inlineImages : {logo: image.getBlob()}, //18行目
name: 'キリン部長'}); //19行目
nameで送信元の名称をメールに付けられます。


他のattachmentsとかnoReplyとかreplyToのパラメータは?
attachementsはドライブ上のファイルidを使うことで、例えば、メールにPDF変換されたファイルを添付することができます。
const id = 'ファイルID';
const file = DriveApp.getFileById(id);
GmailApp.sendEmail(to, subject, body, {attachments: file})
noReplyは{noReply: true}と書くことで、送信者の名前がnoReplyと表示されます。{noReply: false}とすると送信者の名前(もしくはメールアドレス)が表示されます。(※個人のGmailではこの機能は使用できません。)
GmailApp.sendEmail(to, subject, body, {noReply: true});
replyToは受信者が返信ボタンを押すと、replyToで設定したメールアドレスが送信先に設定されます。
GmailApp.sendEmail(to, subject, body, {replyTo: "自分以外のメールアドレス"});

やべ〜めっちゃ便利やん。
まとめ
今回はsendEmailのパラメーターを使ってメールを送信する方法についてご紹介しました。
名前 | 型 | 表現 |
attachments | Blobsource[] / バイナリデータ | 電子メールで送信できるファイル。Googleスプレッドシートや、PDFや色々なデータが使用できます。 |
bcc | String / 文字列 | BCCの宛先 |
cc | String / 文字列 | CCの宛先 |
htmlBody | String / 文字列 | 設定されている場合、HTMLを使用できます。メールにインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。 |
inlineImages | Object / オブジェクト型 | htmlBodyが使用された場合に、画像への参照が<img src = “cid:imageKey” />というhtml表現を使ってメールに貼り付けることができます。 |
name | String / 文字列 | 送信者の名前を表現できます。 |
noReply | Boolean / ブーリアン型 | TrueかFalseを入力すると、送信者の名前がnoReplyで表現されます。 |
replyTo | String / 文字列 | 受信者が返信すると気に、宛先を送信者以外に設定できます。 |
ここまで来れば、あとは自動送信の設定(トリガー)をするだけです。次回はトリガーについてご紹介します。
コメント
[…] 第1話 毎週メールを自動送信したい 〜その3 sendEmailのオプション〜Gma… Google Apps Script ストーリー スポンサーリンク シェアする Twitter Facebook はてブ Pocket LINE コピー ばばーるをフォローする ばばーる Google Apps Scriptでできること […]
[…] 第1話 毎週メールを自動送信したい 〜その3 sendEmailのオプション〜Gma… […]