Help us understand the problem. What is going on with this article?

GoogleAppsScriptでGmailの下書きを、より簡単に作成する方法

More than 1 year has passed since last update.

はじめに

"Gmail GoogleAppsScript 下書き"で検索すると、Gmail APIを利用する方法がヒットしますが、
2017年のアップデートでClass GmailAppにcreateDraftが追加され、より簡単に作成できるようになりました。

公式情報

https://developers.google.com/apps-script/reference/gmail/gmail-app

createDraft(recipient, subject, body, options)

Creates a draft email message with optional arguments.

作例

日報や週報など、定型報告メールを作成しなければいけない場面は、まだ多いようです。

宛先、件名、本文の定型文の設定は自動化して、せめて手を抜き 本来の報告部分に注力しましょう。

おまけで、Utilities.formatDateを利用して、Excelライクな年月日フォーマットを当日の日付に変換しています。
(これにより、例えば件名に"YYYY年MM月dd日"と設定しておけば、当日の日付に変換されるので毎回、日付部分を書き換える必要がなくなります。)

コーディング

function myFunction () {
  var mailTo = "to@example.com"
  var mailCc = "cc@example.com"
  var mailTitle = "日報 yyyy年MM月dd日(ddd曜) ほげほげ"
  var mailBody = '' // テキストメールの場合はここに本文テキストを設定します。 
  var mailHtmlBody = 'yyyy年MM月dd日(ddd曜)分の、ほげほげの日報をお送りします。<br><br>[コメント]<br><br>本日もお疲れ様でした。'  // HTMLメールを作成する場合は、option引数に、htmlBodyとして本文を設定します。

  var date = new Date()

  mailTitle = myDateFormat(date, mailTitle)
  mailHtmlBody = myDateFormat(date, mailHtmlBody)
  var mailArgs = {
      cc: mailCc,
      htmlBody: mailHtmlBody
  }
  GmailApp.createDraft(mailTo, mailTitle, mailBody, mailArgs)
}

//テキストデータ「text」内の'yyyy', 'MM', 'dd', 'hh', 'mm', 'ss', 'aaa'の日付形式文字を、日時データdateに該当する年月日時分秒曜日に変換する
function myDateFormat (date, text) {
  var result = text
  var timeZone = 'Asia/Tokyo'
  // ’aaa’を曜日に変換
  var yobi = ['', '', '', '', '', '', '']
  var rep = yobi[date.getDay()]
  result = result.replace(/aaa/g, rep)

  // 'yyyy', 'MM', 'dd', 'hh', 'mm', 'ss'を年月日時分秒に変換
  var f = ['yyyy', 'MM', 'dd', 'hh', 'mm', 'ss']
  var i = 0
  for (i in f) {
    var reg = new RegExp(f[i] + '(.*?)', 'g')
    rep = Utilities.formatDate(date, timeZone, f[i])
    result = result.replace(reg, rep)
  }
  return result
}

テスト実行

myFuctionを選択した状態で「実行」ボタンを押します。
gas実行.png

初回実行時のみ、承認が必要です。「許可を確認」ボタンを押します。
gas承認.png

実行するアカウントを選択します。
gasアカウント選択.png

お使いのGmailの下書きフォルダに下書きメールが追加されます。
gas下書きフォルダ.png

gas下書きメール.png

自動実行のため、トリガー登録

繰り返し自動で下書きメールが作成されるように、トリガーを登録します。
gasトリガー.png

gasトリガー追加.png

下書きメールを追加するタイミングを設定します。
ここでは毎日、午前0時台に追加されるように設定しています。
gasトリガー設定.png

以上で、毎日指定の時刻に下書きメールが自動作成されます。

その他

Googleスプレッドシートと組合せて、セルから宛先・本文などを取得するようにすると、
非開発者の同僚にも利用してもらいやすくできます。

Hope you enjoy.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away