スプレッドシートに記載されたメールアドレスにGmailから同じ文面を一斉送信する方法【GAS】
8/132019
カテゴリー:プログラミング
ステップメールやメールマガジンなどを行っている方は、
メール配信システムを利用されている方も多いのではないでしょうか。
一方、そのようなことは行っていなくても
同じ文面を一斉に送りたいケースもあります。
私の場合、例えば最近でいうと
セミナー参加者に対するメール
がありました。
数人だったら手作業でやれなくもないのですが、
これが何十人もなったら大変です。
メール配信システムに頼らずなんとか一斉メール送信ができないか
考えてみたところ、GAS(Google Apps Script)を使ってスプレッドシートに記載されたメールアドレスに対して予め用意したドキュメントの文章を一斉送信できる方法を知ったのでその方法を書きます。
セミナーの参加受付が思いの外大変だった
8月にセミナーを2回開催したのですが、
セミナーの参加受付が思いの外大変でした。
Google Formで参加受付
↓
参加いただいた方に自動返信メール(これはGASで実行済み)
↓
場所や支払方法について各申込者に返信
↓
決済があったら領収通知の送付(カードの場合にはstripeで自動化済)
↓
決済のお礼メール
↓
セミナー前日にリマインドメール
↓
セミナー終了後、資料送付とアンケートのお願いメール
これを、ほぼ手作業でやってしまいました・・。
具体的には、Gmailの下書き機能を使ってコピペを何度も。
間違いも起きやすいですし、あまりよくないですね。
スプレッドシートに記載されたメールアドレスにGmailから同じ文面を一斉送信する方法
Google Formで受付をすると、名前とメールアドレスのリストができあがります。
これを利用してメールを一斉送信できれば格段に効率が上がります。
手順としては、
スクリプトエディタ(GASを記述する場所)を作る
↓
メールの内容をGoogle Documentに記載する
↓
スクリプトにDocumentをBody(内容)としたGmailをスプレッドシートのメールアドレスに一斉に送信するコードを書く
といった流れになります。
スクリプトエディタを作る
GASを記述する場所(スクリプトエディタ)を予め作っておきます。
スプレッドシート⇒ツール⇒スクリプトエディタ
で開くことができます。
こんな画面が開きます。
メールの内容をDocumentに入力する
Google Documentを開き、メールの内容を入力します。
{お名前}となっている部分は、
後から変数を指定するのでカッコでくくっています。
他の人のメールが知られないようにと、BCCなどで送ると宛先が入れられないのですが、
これだったらお一人お一人のお名前を指定して各人に送れます。
より丁寧な感じで良いと思います。
Document IDを取得する
後でDocumentの内容をスクリプトに反映させるので、
先程作ったDocumentの固有の番号(ID)を取得します。
Document IDは、URLの/d/と/editの間の部分です。
ここをコピーしておきます。
スクリプトを記載する
先程スプレッドシートで作ったスクリプトエディタに戻って、GASを記述していきます。
(下記は一例ですので、このままコピペしても上手く動作しないこと、ご了承ください。)
function sendEmail() {
var SheetName=SpreadsheetApp.getActiveSheet();//アクティブなシートを取得する
var SheetRow=SheetName.getDataRange().getLastRow();//シート上のデータが存在する範囲を自動で判別して取得し、データが存在する最後の行番号を取得する
var docMail=DocumentApp.openById('DocumentID');//DocumentのIDを指定する
var strDoc=docMail.getBody().getText();//ドキュメントのBody(内容)を取得する
var strSubj='『図解でわかる!税理士が知っておきたいネットビジネスの仕組みと税務』キャンペーン動画の送付'; //タイトル
var strFrom='********@gmail.com'; //Fromのアドレスvar strSend='Ryoko Tomura'; //差出人の名前
for(var i=2;i<=SheetRow;i++){
var strName=SheetName.getRange(i,2).getValue();//お名前を変数strNameに格納
var strToAd=SheetName.getRange(i,3).getValue();//メールアドレスを変数strToAdに格納
var strBody=strDoc.replace(/{お名前}/,strName);//メールの宛名{お名前}を、を変数strNameに置き換える
GmailApp.sendEmail(
strToAd,
strSubj,
strBody,
{
from: strFrom,
name: strSend
}
);//宛先、題名、内容とオプションで送信元、送信アドレスを指定してGmailからメールを送付}//スプレッドシートの最終行になるまで、繰り返す
}
上から説明していきます。
var SheetName=SpreadsheetApp.getActiveSheet();
var SheetRow=SheetName.getDataRange().getLastRow();
1行目:
SpreadsheetAppクラス(スプレッドシートの最上位のオブジェクト)からGetActiveSheetメソッドでアクティブなスプレッドシート(氏名とメールアドレスが記載されているシート)を取得し、変数「SheetName」に格納しています。
2行目:
getDataRangeメソッドでシート上のデータが存在する範囲を自動で判別して取得します。
その上で、getLastRowメソッドで最終行を取得し、変数「SheetRow」に格納しています。
var docMail=DocumentApp.openById('Document ID');
var strDoc=docMail.getBody().getText();
1行目:
DocumentAppクラス(Documentサービスの最上位オブジェクト)からopenByIdメソッドを使って指定したidのドキュメントを開き、「docMail」変数に格納しています。
Document IDには、先程Documentを作成したときにコピーしたIDを入力します。
2行目:
getBodyメソッドを使ってDocumentのbody(内容)を取得した上で、getTextメソッドで文字列を取り出し、変数「strDoc」に格納しています。
var strSubj='『図解でわかる!税理士が知っておきたいネットビジネスの仕組みと税務』キャンペーン動画の送付'
var strFrom='********@gmail.com';
var strSend='Ryoko Tomura';
1行目:
メールの件名を変数「strSubj」に格納しています。
2行目:
メールの送信元を変数「strFrom」に格納しています。
なお、この部分はGmailアドレスの他、Gmailであらかじめ設定しておけば独自ドメインのアドレスも指定できます。
3行目:
送信者の名前を変数「strSend」に格納しています。
for(var i=2;i<=SheetRow;i++){
var strName=SheetName.getRange(i,2).getValue();
var strToAd=SheetName.getRange(i,3).getValue();
var strBody=strDoc.replace(/{お名前}/,strName);
GmailApp.sendEmail(
strToAd,
strSubj,
strBody,
{
from: strFrom,
name: strSend
}
);
for〜最後まで:
スプレッドシートの2行目から最終行(SheetRow)まで繰り返し次のことを行います。
繰り返すこと:
GmailApp.sendEmailメソッドで、
宛先、件名、本文を指定してメールを送信します。
宛先にはスプレッドシートの値を取得(SheetName.getRange(i,3).getValue()部分)し、変数「strAd」に格納されている値を利用しています。
件名には先程格納した変数「strSubj」を使います。
本文は、先程定義したDocumentの文字列の変数「strDoc」を指定し、Documentの冒頭の宛先である{お名前}部分を、変数「strName」に置き換えています。
strNameにはスプレッドシートのお名前が格納されているので(var strName=SheetName.getRange(i,2).getValue()部分)、これで各人のお名前を順次指定することができる仕組みです。
スクリプトを実行する
すべて書き終えたら、スクリプトエディタの実行ボタン(ツールバーの▷ボタン)でスクリプトを実行します。
無事、複数の宛先に同じ文面でメールが届きました。
注意点
なお、この方法で1日に送れるメールの数は無料アカウントの場合100件(to,cc,bcc合計)までです。
あくまでセミナーやキャンペーンなどちょっとした利用にお勧めです。
まとめ
ステップメールやメールマガジンをやっているわけではないので
メール配信システムを利用するまでもないけれど、
同じ文面を複数人に送りたい。(セミナー、キャンペーンなど)
そんなときに利用できるGASを利用した
一斉送信の仕組みを紹介しました。
編集後記
土曜日は、クラウド会計を武器にしたい税理士の方のセミナーを行いました。
暑い中、そしてお盆前という中途半端な日にちであるにもかかわらず
8名の方にご参加いただき、嬉しい1日でした。
最近のあたらしいこと
桜木町 キッチンボンノ
家族で海の公園までドライブ、八景島の花火がたまたま見れた