第1話 毎週メールを自動送信したい 〜その3 sendEmailのオプション〜

Google Apps Script

こんにちは、ばばーるです。

スポンサーリンク

前回のおさらい

前回はsendEmailのオプションのhtmlBodyについてご紹介しました。

  • htmlBodyオプションを使うと文章をhtml表現で整えることができる
    その際に、Bodyは空白にしておく
    文章は+= もしくは + でつなげることができる

今回はsendEmailのパラメーターを使ってメールを送信する方法についてご紹介しました。

パラメータ一覧

名前   型                  表現
attachmentsBlobsource[] / バイナリデータ電子メールで送信できるファイル。Googleスプレッドシートや、PDFや色々なデータが使用できます。
bccString / 文字列BCCの宛先
ccString / 文字列CCの宛先
htmlBodyString / 文字列設定されている場合、HTMLを使用できます。メールにインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。
inlineImagesObject / オブジェクト型htmlBodyが使用された場合に、画像への参照が<img src = “cid:imageKey” />というhtml表現を使ってメールに貼り付けることができます。
nameString / 文字列送信者の名前を表現できます。
noReplyBoolean / ブーリアン型 TrueかFalseを入力すると、送信者の名前がnoReplyで表現されます。
replyToString / 文字列受信者が返信すると気に、宛先を送信者以外に設定できます。

こんなメール

キリン部長
キリン部長

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

たぬきさん
たぬきさん

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

GAS
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のパラメーターを使ってメールを送信する方法についてご紹介しました。

名前   型                  表現
attachmentsBlobsource[] / バイナリデータ電子メールで送信できるファイル。Googleスプレッドシートや、PDFや色々なデータが使用できます。
bccString / 文字列BCCの宛先
ccString / 文字列CCの宛先
htmlBodyString / 文字列設定されている場合、HTMLを使用できます。メールにインライン画像がある場合は、HTML本文にオプションのinlineImagesフィールドを追加できます。
inlineImagesObject / オブジェクト型htmlBodyが使用された場合に、画像への参照が<img src = “cid:imageKey” />というhtml表現を使ってメールに貼り付けることができます。
nameString / 文字列送信者の名前を表現できます。
noReplyBoolean / ブーリアン型 TrueかFalseを入力すると、送信者の名前がnoReplyで表現されます。
replyToString / 文字列受信者が返信すると気に、宛先を送信者以外に設定できます。

ここまで来れば、あとは自動送信の設定(トリガー)をするだけです。次回はトリガーについてご紹介します。

コメント

  1. […] 第1話 毎週メールを自動送信したい 〜その3 sendEmailのオプション〜Gma… Google Apps Script ストーリー スポンサーリンク シェアする Twitter Facebook はてブ Pocket LINE コピー ばばーるをフォローする ばばーる Google Apps Scriptでできること […]

  2. […] 第1話 毎週メールを自動送信したい 〜その3 sendEmailのオプション〜Gma… […]

タイトルとURLをコピーしました