見出し画像

スプレッドシートからメール下書き作成(その6)[GAS]下書きではなく送信する

前回までの記事は「メール下書き」を作成するスクリプトでした。
スクリプトのちょっとした誤りによって、意図しないメールが送信されないよう基本的には「下書き」ベースが望ましいと考えます。

ただ、Google Apps Scriptでは「メール下書き」のみならず「メール送信」もプログラミングで自動実行できます。
用途・状況に応じて使い分けるのが良いでしょう。

「メール送信」スクリプトの場合、誤送信を避けるために「スクリプト実行時、ダイアログを表示して再確認する」という方法も一つの手です。
(前回記事の「スクリプト実行ボタン」でも触れた手法と同じものです。)

このようなスクリプトを書きました。

function createDraftMail() {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  const recipient = sheet.getRange(1, 2).getValue();
  const ccRecipient = sheet.getRange(2, 2).getValue();
  const bccRecipient = sheet.getRange(3, 2).getValue();
  const subject = sheet.getRange(4, 2).getValue();
  const body = sheet.getRange(5, 2).getValue();

  const options = {
    cc: ccRecipient,
    bcc: bccRecipient
  };

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

}

function sendMail() {

  if (Browser.msgBox('スクリプトを実行しますか?', Browser.Buttons.OK_CANCEL) === 'cancel') {
    return;
  }

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  const recipient = sheet.getRange(1, 2).getValue();
  const ccRecipient = sheet.getRange(2, 2).getValue();
  const bccRecipient = sheet.getRange(3, 2).getValue();
  const subject = sheet.getRange(4, 2).getValue();
  const body = sheet.getRange(5, 2).getValue();

  const options = {
    cc: ccRecipient,
    bcc: bccRecipient
  };

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

}


function onOpen() {
  const ui = SpreadsheetApp.getUi();
  const menu = ui.createMenu('スクリプト');
  menu.addItem('メール下書き', 'createDraftMail');
  menu.addItem('メール送信', 'sendMail');
  menu.addToUi();
}

上記のスクリプトでは、スプレッドシートのメニューに「メール下書き」と「メール送信」の2つのメニューが追加され、それぞれのスクリプトが実行できます。

「メール送信」スクリプトを実行すると下記の「誤送信防止」ダイアログが表示されます。

「OK」押下の場合はその後に書かれた「メール送信スクリプト」が実行されます。
「キャンセル」を押下した場合はそこでスクリプトは終了し、メールは送信されません。

本記事で「スプレッドシートからメール下書き作成」シリーズはいったん終了します。
プログラミングの便利さに触れ、Google Apps Scriptに興味を持って頂けますと幸いです。

【シリーズ記事まとめ】
スプレッドシートからメール下書き作成(その1)初めてのGAS
スプレッドシートからメール下書き作成(その2)GASを分解する
スプレッドシートからメール下書き作成(その3)Cc/Bcc追加
スプレッドシートからメール下書き作成(その4)シート複製
スプレッドシートからメール下書き作成(その5)スクリプトの実行方法に関して
スプレッドシートからメール下書き作成(その6)下書きではなく送信する(本記事)


この記事が気に入ったらサポートをしてみませんか?