Google Apps Script(GAS)のGmailApp、MailAppモジュールととGoogleスプレッドシートを利用して、Gmail上の自動処理(下書きの作成、メール送信)の自動化をします。
このプログラムで出来る事
このプログラムを利用することで、次の内容を自動化することが出来ます。
- 同じような文面の複数のユーザーに対するメールの下書き
- 同じような文面の複数のユーザーに対するメール送信
手動で行うと時間が掛かってしまう作業を自動化する事で、作業時間の短縮が見込めます。さらに、単純な作業の繰り返しからの飽きによるモチベーションの低下の防止を見込みます。
プログラムの作成の為にやる事
以下の2点をGoogleスプレッドシートに対して行います。
- Apps Scriptプログラム(後述)を作成
- 所定のフォーマットに編集
Apps Scriptプログラムの作成
Googleスプレッドシートのメニューバーから「拡張機能 – Apps Script」を選択し、表示されたApps Scriptの画面に以下のプログラムを貼り付けて保存します。
保存後、同画面で「実行」を押下すると、「アカウントへの実行許可」を求められるため、これを許可します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
function onOpen() { var spreadsheet = SpreadsheetApp.getActive(); var menuItems = [ {name: 'リストのメール下書き', functionName: 'sendMail'} ]; spreadsheet.addMenu('メール下書き作成', menuItems); } function sendMail() { // Googleスプレッドシートからデータ取得 var spreadsheet = SpreadsheetApp.getActive(); var sheet = spreadsheet.getActiveSheet(); var range = sheet.getDataRange(); var rangeValues = range.getValues(); // スプレッドシートから基本情報の取得 var subject = rangeValues[0][2] // メールタイトル var text = rangeValues[1][2] // メール本文 var keisyo = rangeValues[3][2] // 相手の敬称 // メールタイトル、文面の置換処理 var titleCol = 1 // タイトル {title1~}の列 var textCol = 2 // 文面 {text1~}の列 var companyCol = 5 // 会社名列 var nameCol = 6 // 氏名列 var emailCol = 7 // email列 var ccCol = 8 // cc列 var startRow = 7 // ループ開始行 No1 行目の位置(タイトル、文面、宛先共通) var loopCnt = 20 // 置換ループ数 // タイトル、本文の置換処理 for(var i = 0; i < loopCnt; i++) { iti = i + 1 afterTitleVal = rangeValues[startRow + i][titleCol] subject = subject.replace('{title' + iti + '}', afterTitleVal) afterTextVal = rangeValues[startRow + i][textCol] text = text.replace('{text' + iti + '}', afterTextVal) } // 下書きの作成処理 for(var i = 0; i < loopCnt; i++) { iti = startRow + i var company = rangeValues[iti][companyCol]; var name = rangeValues[iti][nameCol].split('、').join(keisyo + '、') + keisyo ; var email = rangeValues[iti][emailCol]; var cc = rangeValues[iti][ccCol]; if(email == "") { break; } var replacedText = text.split('{会社名}').join(company).split('{氏名}').join(name); // メール送信ならこちら //MailApp.sendEmail(email, subject, replacedText); var mailCc = cc ; var mailArgs = { cc: mailCc, // htmlBody: replacedText } GmailApp.createDraft(email, subject, replacedText, mailArgs) } //Browser.msgBox('メール送信が完了しました'); Browser.msgBox('メール下書きを作成しました'); } |
メールを送信したい場合
下書きではなく、そのままメールを送付したい場合は、次の手順を取ります。
- MailApp.sendEmail… を有効化(直前の// を消します。)
- GmailApp.createDraft…をコメントアウト(直前に // を入れます。)
Googleスプレッドシートの編集
画像の様に設定します。

設定内容
B1:メールタイトル(ラベル)
C1-H1(結合):メールタイトルの内容
B2-B3(結合):メール本文(ラベル)
C2-H3(結合):メール本文の内容
B4:敬称(さん、様)(ラベル)
C4-H4:敬称(さん、様)の内容
A7:No(ラベル)
B7:タイトル(title1~)(ラベル)
C7:本文(text1~)(ラベル)
A8-27:1~20(ラベル)
B8-27:タイトルの置換後文字列(それぞれ{title1}~{title20]に対応)
C8-27:本文の置換後文字列(それぞれ{text1}~{text20]に対応)
E7:No(ラベル)
E8-27:1~20(ラベル)
F7:会社名(ラベル)
G7:氏名(ラベル)
H7:email(ラベル)
I7:cc(ラベル)
F8-27:会社名の置換後文字列(メールごとに{会社名}に対応)
G8-27:氏名の置換後文字列(メールごとに{氏名}に対応)
H8-27:メールごとのemailアドレス
I8-27:メールごとにccに格納するメールアドレス
利用方法
用意したフォーマットに必要事項を入力後、メニューバーの「メール下書き作成 – リストのメールの下書き」を押下します。
実行後、少しして「メール下書きを作成しました。」のメッセージが表示されれば、Gmailに下書きが作成されています。


下書きの内容に問題が無ければそのまま送付します。
おわりに
いかがでしたでしょうか。
同じようなメールを作成する作業は単純に手を動かしてしまえば少しの時間で出来てしまうのですが、単純な作業の繰り返しは飽きによるモチベーションの低下につながるものです。
このブログでは引き続きそのような作業を省略化、軽微化出来るプログラムなどを紹介していければと考えております。
参考)GASとLINEボットで自動翻訳アプリ
Google Apps ScriptとLINEボットによる和英双方向自動翻訳アプリです。
OCRモジュールを利用している為、画像内の文字にも反応します。

参考)Google Apps ScriptでSlackの自動化 – GASによる自動メッセージ送信 –
Google Apps ScriptによるSlackへのメッセージ送信の例です。

コメント