今回はスプレッドシートにまとまった宛先にメールを一気に送る方法と下書きに一気に保存する方法を紹介していきます。
使うものはGoogleのスプレッドシートとGmailだけです。
では早速紹介していきます。
メールを送る前の準備
まずはスプレッドシートに必要な情報をまとめていきます。
まとめる情報はメールを送信する際に必要になる情報ですね。
- 宛先
- CC
- 件名
- 本文
この4つをスプレッドシートにまとめておけばすぐにメールを送ることができます。
添付ファイルもつけることができますがそれはまた今度紹介します。
Apps Scriptでメールを送るスクリプトを書く
準備が終わったらいよいよコードを書いていきます。
どこにコードを書くかと言うと、スプレッドシートの拡張機能から”Apps Script”を選択します。(もしくはツールからスクリプトエディタを選択しても同じ画面を開くことができます)
そうすると無題のプロジェクトが起動するのでそこにポチポチコードを書いていきます。
ではスプレッドシートにまとまった宛先にメールを送るコードの全文を紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function sendMail() { var aSheet = SpreadsheetApp.getActiveSheet(); var row = aSheet.getDataRange().getLastRow(); for(var i = 4; i <= row; i++){ var toto = aSheet.getRange(i,4).getValue(); var cc = aSheet.getRange(i,5).getValue(); var subject = aSheet.getRange(i,6).getValue(); var body = aSheet.getRange(i,7).getValue(); GmailApp.createDraft(toto, subject, body,{cc:cc}); } } |
たったこれだけでスプレッドシートにまとめられた宛先に一気にメールを送ることができちゃいます。
では解説していきます。(解説するほどの事は無いですが…)
1 2 3 |
function sendMail() { var aSheet = SpreadsheetApp.getActiveSheet(); var row = aSheet.getDataRange().getLastRow(); |
最初の2行では宛先がまとまっているシートと、宛先が書かれている表の最終行を取得しています。
これをすることで、どのシートのどの表から情報を取ってくるかを指定することができます。今回はこのスクリプトが書かれているシート=宛先がまとまっているシートとしているので、ActiveSheetでシートを取得しています。
仮に特定のシートを指定しないといけない場合はここで指定してあげましょう。
次に最終行の取得について、これは結構どこでも使える便利なコードです。
このコードだけで表の最終行をサクッと取得することができます。
1 |
for(var i = 4; i <= row; i++){ |
これが実際に表をループするコードです。
今回は4行目から入力内容が始まっているので、i=4にしています。仮に10行目から始まっている表を使うのであればi=10にする必要があります。
1 2 3 4 |
var toto = aSheet.getRange(i,4).getValue(); var cc = aSheet.getRange(i,5).getValue(); var subject = aSheet.getRange(i,6).getValue(); var body = aSheet.getRange(i,7).getValue(); |
上からto,cc,件名、本文を指定してあげてます。
それぞれの要素のスプレッドシートの該当場所を指定してあげましょう。
今回であればToが4列目、CCが5列目、件名が6列目で、本文が7列目になっています。
これさえ押さえておけば、トリッキーな入力フォーマットでもメールを送ることができます。
1 |
GmailApp.sendEmail(toto, subject, body,{cc:cc}); |
この一文で今まで格納した情報を元にメールを作成してメールを送信していきます。
Gasは一日に自動で送れるメールに上限数があるので注意
上限とか気にし始めると色々面倒になるので、個人的には下書き保存でメールだけ一気に作っておいて、送信は手動でやるのがオススメです。(件数にもよりますが…)
下書きを作成する場合は↓のコードに差し替えてください。
1 |
GmailApp.createDraft(toto, subject, body,{cc:cc}); |
GASでGmailを送ることができれば色々広がる
今回は初歩の初歩的な内容でしたが、Gmailを自動化できれば他のGoogleサービスと連携してもっと役に立つ自動化を作ることも夢ではなくなります。
たとえば、Googleフォームで入力してもらった情報をスプレッドシートに溜めていって、特定の条件の場合のみメールを送るなんてこともできてしまいます。
なので、とりあえず今回みたいな簡単な所から取り組んでGASの面白さと役立ちさを理解してもらえたら嬉しいです。