【GAS】メール(Gmail)のドラフトを作成して送信する方法|GmailApp.createDraftとSendメソッド(MailApp.sendEmailを使わない方法|Google Apps Script)

Apps Script apps script GAS-prograshi(プロぐらし)-kv AppsScript
記事内に広告が含まれていることがあります。

Google Apps Script(GAS)を使って、Gmailのドラフトを作成し送信する方法をご紹介します。

一般的には「MailApp.sendEmail」メソッドが使用しますが、この方法では1日に送信できる上限数が決まっています。

メール自動送信の上限数を回避して、より柔軟にメールをするにはGmailApp.createDraftとsendを使います。

ここでは、GmailApp.createDraftを使ってメールの下書きを作成し、sendメソッドを使って送信します。



ドラフトを作成する方法(createDraftメソッド)

Gmailのドラフトを作成するには「GmailApp.createDraft」を使います。

createDraftメソッドの構文は以下のようになってます。

createDraft(recipient, subject, body, options) 


それぞれの引数は以下の通りです。

名前説明
recipientString受信者のアドレス
subjectString件名
bodyStringメールの本文
optionsObject詳細設定


引数optionsでは以下ののパラメータが使用できます。

名前説明
attachmentsBlobSource[]メールで送信するファイルの配列
bccStringBcc に送信するメールアドレスのカンマ区切りのリスト
ccStringCc に追加するメールアドレスのカンマ区切りのリスト
fromStringメールの送信元のアドレス。 getAliases() が返す値の
htmlBodyString設定すると、HTML をレンダリングできるデバイスで代わりに使用されます。 HTML でオプションの inlineImages フィールドを追加できます。 本文にインライン画像がある場合は
inlineImagesObjectイメージキーからのマッピングを含む JavaScript オブジェクト (String)から画像データ(BlobSource)へ。htmlBody パラメータが使用され、<img src="cid:imageKey" /> 形式でこれらの画像への参照が含まれていることを前提としています。
nameStringメールの送信者の名前(デフォルト: ユーザー名)
replyToStringデフォルトの返信先アドレスとして使用するメールアドレス (デフォルト: ユーザーのメールアドレス)。


例えば以下のように使います。

  let recipients = 'test@example.com';
  let subject = 'メールの件名です';
  let body = 'メールの本文です';

  GmailApp.createDraft(recipients, subject, body, {
    name: 'テスト送信者',
    cc: 'test2@gmail.com',
    bcc: 'test3@gmail.com',
    replayTo: 'info@example.com'
  })


これを実行すると指定した内容のメールが下書きに作成されます。



ドラフトを作成し送信する方法

ドラフトを作成するだけでなく、作成したドラフトを送信することができます。

作成したドラフトを変数に格納して、sendメソッドを使います。

function sendMail() {
  let recipients = 'test@gmail.com';
  let subject = 'メールの件名です';
  let body = 'メールの本文です';

  let draft = GmailApp.createDraft(recipients, subject, body, {
    name: 'テスト送信者',
    cc: 'test2@gmail.com',
    bcc: 'test3@gmail.com',
    replayTo: 'info@example.com'
  })

  draft.send();
}


以上でメールを送信することができます。



メールを取得して送信する(GmailApp.search)

メールBOXの中に下書きとして保存されているメールを取得して送信することもできます。

既存のメールを取得するにはGmailApp.searchを使います。

例えば、件名が「テストメール」となっている下書きがある場合は以下のようにします。

function sendDraft() {
  // 下書きを取得する (ここでは、件名が"テストメール"の下書きを取得する例)
  let drafts = GmailApp.search("subject:テストメール");
  let draft = drafts[0]; // 最初の1件を取得

  // 下書きを送信する
  draft.send();
}



全てのドラフト(下書き)を取得して送信する(getDrafts)

上記のように一度にドラフト作成→送信まで行う方法もありますが、それ以外の方法として、既に作成してある(複数の)下書きを取得して送信する方法もあります。

GmailのメールBoxに下書きとして保存されているメールを取得して送信するには、GmailApp.getDraftsメソッドを使って全ての下書きメールを取得し、一つ一つをsendメソッドで送信します。

  let drafts = GmailApp.getDrafts();
  drafts.forEach( draft => {
    draft.send();
  })



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