GASでGmailの下書きを簡単に作成することができます。スプレットシートに宛名、CC、BCC、本文などを指定することが可能ですので、営業などの文章が決まっているメールを効率的に作成することが可能です。
スプレットシートの準備
まず、Googleスプレットシートを準備します。スプレットシートの詳しい説明はGoogle Apps Scriptのスクリプトエディタを開く方法の記事をお読みください。
スプレットシートを開いて、以下の表を作成します。「作成日」は下書きを作成した日が出力されます。「送信日」は送信した日を入力します。
シート名は「宛先」に変更してください。
次にシートを追加して、下の図のようにメールの内容を記載します。「CC」 「BCC」 はメールのCCとBCCに該当します。
こちらもシート名は「メール本文」に変更します。
記載する時のポイントは、各項目それぞれ一つのセルに記載することです。特に「本文」は長くなってしまうと思いますが、複数のセルにわたって記載してしまうとGASの処理が複雑になります。 また、各シートの各項目の記載位置やシート名についてですが、次の「メールの下書き作成」のGASのコードをそのまま使用される場合は、シートの例と同じ場所同じ名前にしてください。
メールの下書き作成
では、スクリプトエディタを開いて、コードを書いていきます。
function gmailDraft() {
const ss = SpreadsheetApp.getActiveSpreadsheet()
const SHEET = ss.getSheetByName('宛先')
let data = SHEET.getDataRange().getValues()
const SHEET2 = ss.getSheetByName('メール本文')
const data2 = SHEET2.getDataRange().getValues()
const date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'M月d日')
const subject = data2[0][1] //タイトル
const sentence = data2[2][1] //本文
const options = {
"cc" : data2[3][1], //ccとbcc
"bcc" : data2[4][1]
}
for (i in data) {
if (i != 0) { //見出しを避ける
if (data[i][4] == '') { //作成日が空白の場合メール作成
const recipientCompany = data[i][1]
if (data[i][2] != '') {
var recipientName = data[i][2]
}else{
var recipientName = "ご担当者"
}
const recipient = data[i][3]
const body = `${recipientCompany}\n${recipientName}様\n\n${sentence}`
GmailApp.createDraft(recipient, subject, body, options)
data[i][4] = date
}
}
}
SHEET.getDataRange().setValues(data)
}
最初に下記のコードでスプレットシートの1シート目(宛先)と2シート目(メール本文)に記載した情報全てを取得します。
const ss = SpreadsheetApp.getActiveSpreadsheet()
const SHEET = ss.getSheetByName('宛先')
let data = SHEET.getDataRange().getValues()
const SHEET2 = ss.getSheetByName('メール本文')
const data2 = SHEET2.getDataRange().getValues()
そして、2シート目(メール本文)のメールのタイトル、本文を変数に代入します。
セルの指定方法は下記のように[行][列]の数字で指定します。例えばタイトルはB1のセルに記載しており、行は[1]、列は[2]となりそうですが、行列を0から数えて指定するため、タイトルの行は[0]、列は[1]となります。
const subject = data2[0][1] //タイトル
const sentence = data2[2][1] //本文
「CC」「BCC」はoptionsに設定します。 「CC」「BCC」 が固定で決まっている場合は下記のようにコードで直接指定することも可能です。
const options = {
"cc" : "CC@Ⅰ.com",
"bcc" : "BCC@Ⅱ.com"
}
メールの下書きを作成する条件として、「作成日」に日付が入っている場合はメールを作成しないようにしています。これは同じメールを重複して作成しないようにするためです。
また、メールの「本文」の頭に送信先の「会社名」「名前」を結合させます。その際スプレットシートの「名前」が空白の場合には「ご担当者様」とメールに記載するようにしています。
最後にGmailAppオブジェクトのcreateDraftメソッドを使用してメールの下書きを作成します。その際に、「作成日」に日付を出力します。
createDraftメソッド は以下のように使用します。オプションは省略することも可能です。
スプレットシートに「メール作成」のメニューを追加する
今のままだとスクリプトエディタを開かないとメールの下書き作成のGASが動きません。そこで下の図のようにスプレットシートのメニューバーに「メール作成」のメニューを追加し、スプレットシート上だけでメール作成ができるようにします。スプレットシートのタイトルは任意です。
スクリプトエディタに記載するコードは以下のようになります。
function onOpen(event) {
var ui = SpreadsheetApp.getUi()
var menu = ui.createMenu('メール作成') //メニュー名を指定
menu.addItem('メール下書き作成', 'gmailDraft') //メニューの項目を指定
menu.addToUi() //スプレットシートに反映
}
onOpenを使用することで、スプレットシートを開いたときに自動でメニューバーを追加してくれます。メニューを追加する際は以下のメソッドを使用します。
getUi() | UIを取得する。 |
createMenu() | 取得したUIにメニューを追加する。 |
addItem() | メニューにアイテムを追加する。 ここで先ほど作成した「メールの下書き作成」の関数名を指定します。 |
addToUi() | メニューを追加したUIをスプレットシートに反映する。 |
では、完成したものを実際に動かします。作成した「メール作成」メニューから「メール下書き作成」を選ぶと以下の承認画面が出てきます。
「続行」を押して許可していきます。許可した後もう一度動かしてみると、ツールを動かした人のGmailに下のようなメールの下書きが作成されます。
スプレットシートやスクリプトエディタの作成に多少時間は掛かりますが、このように一瞬でメールの下書きを何個も作成できるようになり、メール作成の時短に繋がります。
以上がGASを使用したメールの下書き作成の紹介になります。
ソースコードのダウンロード
下記からソースコード全体をダウンロードして頂けます。
GmailApp.createDraft(メールアドレス , 件名 ,本文 , [オプション(CC,BCC)])