はじめに
どうも、ビジボットです。
今回GoogleAppsScript (GAS)を使って、スプレッドシート上のボタンを押すだけで自動でメールが送信されるというコードを紹介します。
使うイメージで例えば開発がテストメールを指定した件名や内容で送らないといけない場合、そのサンプルメールがボタンを押すたびに送信できたり、サンプルメールで一部可変部分があった場合にスプレッドシート上で指定する事で、送信されるメールがカスタムできたりと、様々な部分で便利になります。
1.送信フォーマットを作成する
スプレッドシート上に以下送信したいアドレスと、件名、本文を入れておきます。またシート名を「メールテンプレ」と指定する事で、これがそのまま送信されるテンプレートになります。

2.GASコード
GASは送信するスプレッドシート情報を取得し、それぞれのセルに入っている値をそれぞれの変数に指定して、GmailApp.sendEmailで送信します。
詳細は説明していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function goGoGmail() { var sheet = SpreadsheetApp.openById('1E1qyEtff2bLzoAJDAhof9Rlw42pM-Ux8gZBc1tn1InE'); var add = sheet.getSheetByName('メールテンプレ').getRange(1,2).getValue(); var popUp = Browser.msgBox("送信確認!", add + "へ送信しますか?", Browser.Buttons.OK_CANCEL); if (popUp == 'ok') { var mailSubject = sheet.getSheetByName('メールテンプレ').getRange(2,2).getValue(); var mailBody = sheet.getSheetByName('メールテンプレ').getRange(3,2).getValue(); GmailApp.sendEmail(add, mailSubject, mailBody); Browser.msgBox("送信しました"); } else { Browser.msgBox("キャンセルしました"); } } |
以下GASですが、まず変数sheetに対して実行するスプレッドシートを指定します。
※よくActiveで指定をしていますが、気分で変えますがだいたいActiveが一般的かも?
1 |
var sheet = SpreadsheetApp.openById('1E1qyEtff2bLzoAJDAhof9Rlw42pM-Ux8gZBc1tn1InE'); |
以下GASは送信したいアドレスを取得します。
getRange(1,2)はセルの番地を指定しており、1行目の2列目に取得したい値が入っているため、(1,2)と指定します。また、getValueはその指定した値を取得する処理です。
※ここで先にアドレス情報だけ取得しているのには理由があります
1 |
var add = sheet.getSheetByName('メールテンプレ').getRange(1,2).getValue(); |
次に取得したアドレスを元に、そのアドレスに対して本当に送信しますか?というメッセージボックスを表示させ、送信前の最終チェックを行います。
送信OKだったらプログラムを実行、それ以外(キャンセル)だったら処理を終了、という書き方をしています。

1 |
var popUp = Browser.msgBox("送信確認!", add + "へ送信しますか?", Browser.Buttons.OK_CANCEL); |
送信OKだった場合の処理は簡単なのでサクッと説明しちゃいます。
まず、if文でpopUpに指定された値が’ok’だった場合はTRUEとして以下処理が実行され、変数add同様件名の取得、本文の取得が行われます。
次にGmailApp.sendEmail関数で引数に取得している送信情報を指定して渡すとメールが送信されます。
この受け渡しが終わったら送信した旨を記載したメッセージボックスを表示します。

※キャンセルの場合はキャンセルポップアップが表示されます
1 2 3 4 5 6 7 8 |
if (popUp == 'ok') { var mailSubject = sheet.getSheetByName('メールテンプレ').getRange(2,2).getValue(); var mailBody = sheet.getSheetByName('メールテンプレ').getRange(3,2).getValue(); GmailApp.sendEmail(add, mailSubject, mailBody); Browser.msgBox("送信しました"); } else { Browser.msgBox("キャンセルしました"); } |

3.送信するボタンを設置する
最後に、作ったプログラムをスプレッドシート上で実行できるようにします。
スプレッドシートの挿入から図形を選択後、ボタンをクリックすると右上に点が3つ出てくるのでこれをクリックすると「スクリプトの割り当て…」とあるので、割り当てます。

どのスクリプトを割り当てますか?と出てくるので作成した以下function名(goGoGmail)を入れます。
1 2 |
function goGoGmail() { } |

これでボタンを押すたびに実行され、ポップアップが表示されて送信するか否かが問われます。(笑)
※ボタンは右クリックで修正できます
明日はこの応用をすこしトライしてみようと思います。
最後までお付き合い頂きありがとうございました!