はじめに
"Gmail GoogleAppsScript 下書き"で検索すると、Gmail APIを利用する方法がヒットしますが、
2017年のアップデートでClass GmailAppにcreateDraftが追加され、より簡単に作成できるようになりました。
公式情報
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を選択した状態で「実行」ボタンを押します。
初回実行時のみ、承認が必要です。「許可を確認」ボタンを押します。
お使いのGmailの下書きフォルダに下書きメールが追加されます。
自動実行のため、トリガー登録
繰り返し自動で下書きメールが作成されるように、トリガーを登録します。
下書きメールを追加するタイミングを設定します。
ここでは毎日、午前0時台に追加されるように設定しています。
以上で、毎日指定の時刻に下書きメールが自動作成されます。
その他
Googleスプレッドシートと組合せて、セルから宛先・本文などを取得するようにすると、
非開発者の同僚にも利用してもらいやすくできます。
Hope you enjoy.