オンラインセミナーの受付はGoogle Form。GAS(Google Apps Script)を活用して自動返信する方法
3/282022
カテゴリー:プログラミング
毎月1回、オンラインセミナーを行うことが習慣になりました。
ひとり仕事の場合、
申込から受付の業務は
プログラムを使って効率化し、
その分セミナーの内容を練ることに集中したいですね。
そこでおすすめなのが、
セミナー受付にGoogle Form、
自動返信にGAS(Google Apps Script)を使う方法です。
※ひとり仕事の事務手続に人手も、高価なシステムも必要ない
セミナー受付にGoogle Form+GASをおすすめする理由
セミナーの受付をするには、
Google Formの他にも
WordPressのプラグインを利用する、
外部のサービス(Peatixなど)を利用する
といった方法があります。
Google Formをおすすめするのは、
- 完全無料
- 視覚的に項目を追加できる
- Webページに簡単に貼り付けられる
- スプレッドシートに記録されたデータにGASを活用できる
といった理由からです。
Google Formを作る
まず、Google Formを作りましょう。
Googleのアカウントがあれば、誰でも作ることができます。
新しいフォームを作成→空白を選び、
タイトルや質問したい項目を追加していきます。
「必須」をオンにすると、必須項目として登録できます。
セミナー受付が目的なので、項目は最小限が良いでしょう。
項目を作り終えたら、右上の「送信」ボタンをクリックし、
「<>」のタブを選びます。
「HTMLを埋め込む」という欄に表示されているコードをコピーします。
コピーしたコードを、
表示させたいページのテキスト画面にて貼り付けます。
ビジュアル画面で確認できたら完了です。
これで、「ネットでオンラインセミナーの受付をする」
システムが一応出来上がりました。
GASで自動返信をする方法
上記の方法だけで受付はできますが、
受付後の対応がすべて手動になってしまいます。
そこで、申込があったら、Gmailで自動返信する仕組みを
GASで作ります。
❶スプレッドシートを作る
先ほど作ったGoogle Formから申込があると、
スプレッドシートにデータが蓄積されていきます。
まずはそのスプレッドシートの設定を行います。
Google Formの「回答」タブを選び、
スプレッドシートのマークをクリックします。
すると、回答リストのスプレッドシートを作成することができます。
スプレッドシートができあがりました。
こちらに、お申込があった場合にデータが蓄積されていきます。
(タイムスタンプには日付と時刻が記録されます)
❷スプレッドシートの通知設定をする
セミナーのお申込があったらすぐに知りたいですよね。
そこで、申込があったとき(スプレッドシートが更新されたとき)
に、自分のGmailに通知することができます。
ツールメニューから「通知ルール」を選び、
「ユーザーがフォームを送信したとき」「メール – その都度」のオプション
を選択しておきます。
これで、申込があったときにメールですぐ気づくことができます。
↓こんな感じでメールが届きます。
❸GAS(Google Apps Script)を書く
準備ができたので、自動返信を行うGASを書いていきます。
GASは、拡張機能の「Apps Script」という画面で書きます。
Apps Scriptを開くと、コードを書く画面が現れます。
タイトルを「Auto Reply」などわかりやすい名前に変えておきます。
今回書いた自動返信のGASは以下のとおりです。
function autoreply() {
var ss=SpreadsheetApp.getActiveSheet();//アクティブなシートを取得する
var row=ss.getDataRange().getLastRow();//シート上のデータが存在する範囲の最終行を取得する
var docMail=DocumentApp.openById("DocumentID");//DocumentのIDを指定して、ドキュメントを開く
var doc=docMail.getBody().getText();//ドキュメントのBody(内容)を取得の上、文字列を取得する
var subj="オンラインセミナーにお申込いただきありがとうございます!ご決済のご案内"; //メールのタイトル
var From="rtomura@freebiz-consulting.com"; //差出人のメールアドレス
var Send="フリービスコンサルティング合同会社 戸村涼子"; //差出人の名前
var time=ss.getRange(row,1).getValue();//タイムスタンプをtime変数に格納
var strName=ss.getRange(row,2).getValue();//お名前を変数strName変数に格納
var toMail=ss.getRange(row,3).getValue();//送り先のメールアドレスを変数toMailに格納
var method=ss.getRange(row,4).getValue();//セミナー参加方法を変数methodに格納
var body=doc.replace(/{タイムスタンプ}/g,time).replace(/{お名前}/g,strName).replace(/{メールアドレス}/g,toMail).replace(/{セミナー参加方法}/g,method);
//ドキュメントの宛名を、strNameに置き換えた上で変数bodyに格納
let options = {
"from" : From,
"name" : Send,
//sendEmail関数のオプションに差出人のメールアドレス、差出人の名前を指定
};
GmailApp.sendEmail(
toMail,
subj,
body,
options,
)
}
ひとつひとつ説明をします。
var ss=SpreadsheetApp.getActiveSheet();//アクティブなシートを取得する
var row=ss.getDataRange().getLastRow();//シート上のデータが存在する範囲の最終行を取得する
こちらは先ほど作成したスプレッドシートを取得して、
最終行まで取得しています(後で値を利用するため)。
var docMail=DocumentApp.openById(“DocumentID”);//DocumentのIDを指定して、ドキュメントを開くvar doc=docMail.getBody().getText();//ドキュメントのBody(内容)を取得の上、文字列を取得する
メール文面は、直接プログラムに書いても良いのですが、
改行する際に「n/」を入力しなければいけないなど、面倒です。
別のGoogle Documentを下記のとおり作って呼び出し、その内容を読み取る方が楽なので、おすすめです。
どうやって呼び出すのかというと、Google Documentを特定する
「Document ID」を指定しています。
Document IDは、Google Documentのアドレスのd/と/editの間
になります。どコピペしてプログラムに貼り付けましょう。
var subj=“オンラインセミナーにお申込いただきありがとうございます!ご決済のご案内”; //メールのタイトル
こちらはメールのタイトルです。
セミナーの内容に合わせて文面を変えます。
var From=“rtomura@freebiz-consulting.com”; //差出人のメールアドレスvar Send=“フリービスコンサルティング合同会社 戸村涼子”; //差出人の名前
差出人のメールアドレスと、
差出人の名前を指定します。
注意したいのは、メールアドレスはあらかじめGmailに登録されているものだけしかできない、
という点です。
自分のドメインメールで送りたいのであれば、
そちらをGmailにあらかじめ追加しておかないとエラーになるので気をつけましょう。
var time=ss.getRange(row,1).getValue();//タイムスタンプをtime変数に格納
var strName=ss.getRange(row,2).getValue();//お名前を変数strName変数に格納var toMail=ss.getRange(row,3).getValue();//送り先のメールアドレスを変数toMailに格納var method=ss.getRange(row,4).getValue();//セミナー参加方法を変数methodに格納
それぞれのセルに、値を代入しています。
注意:このとき、項目が「時刻」である場合には、「getValue」ではなく「getActiveValue」を使います!(誤表示を防ぐため)。
参考:
【GAS】Google Formの自動返信メールで時刻が「Sat Dec 30 1899」と表示されてしまう場合の対応策(簡単)
var body=doc.replace(/{タイムスタンプ}/g,time).replace(/{お名前}/g,strName).replace(/{メールアドレス}/g,toMail).replace(/{セミナー参加方法}/g,method);
//ドキュメントの宛名を、strNameに置き換えた上で変数bodyに格納
replaceメソッドで、文字列を特定の文字列に置き換えることができます。
{タイムスタンプ}はtime変数に、
{お名前}はstrName変数に、
{メールアドレス}はtoMail変数に
置き換えられています。
この波括弧で囲われた部分を、先ほどのGoogle Documentに
埋め込むことができるのです。
例えば、{お名前}様
となっている場合、
申込者の名前が「戸村涼子」であれば
戸村涼子様と置き換えられます。
田中さんになっても鈴木さんになってもすべて置き換えてくれます。
let options = {“from” : From,“name” : Send,//sendEmail関数のオプションに差出人のメールアドレス、差出人の名前を指定};GmailApp.sendEmail(toMail,subj,body,options,);
最後に、Gmailでメールを送信しています。
GmailApp.sendEmailのそれぞれの項目は、それぞれ下記を指定しています。
toMail・・・申込者のメールアドレス
subj・・・メールのタイトル
body・・・メールの内容(Google Documentの内容)
option・・・差出人のメールアドレス、差出人の名前
届くメールの全体は、下記のとおりです。
決済の案内(クレジットカード決済代行会社へのリンク)も
同時にしておくことによって、
効率化できますね。
❹トリガーを設定する
上記のプログラムは、何もしなければ手動で実行しなければなりません。
「申込があったら、自動返信プログラムを実行する」
設定をする必要があります。
この「プログラムが動くきっかけ」のようなものを、
「トリガー」と呼びます。
左のメニューからトリガー(時計マーク)を選び、
右下の+トリガーを追加ボタンでトリガーを追加します。
実行する関数は自分が作ったプログラムのタイトル(今回はautoreply)、
イベントのソースを選択は「スプレッドシートから」、
イベントの種類を選択は「フォーム送信時」
を選択して保存します。
初めて行うとき、下記の画面がでますが
「Advanced」を選んで、進みます。
「Go To プログラムのタイトル(unsafe)」
をクリックします。
承認をすると、トリガーが作成されます。
これで、「Google Form送信時に、自動返信プログラムが実行される」
ようになりました。
まとめ
オンラインセミナーの受付・自動返信にGoogle FormとGAS(Google Apps Script)
を使う方法をまとめました。
スプレッドシート+GASで効率化できることはたくさんあるので、
その一歩に是非お試しください。
以前、GASによるGmail一斉送信(添付ファイル付き)の仕組みを
動画にしました。
その他、GASを使って外部からAPI経由でデータ取得することも試しています。
【GAS】freeeAPIを使って、3期比較損益計算書をスプレッドシートに出力する方法。月次レポート作成を効率化させよう!
編集後記
金曜日は、銀座でカメラの練習を。
色味を変えて撮るとあらたな楽しさがあることに気づきました。
土日は、観光客がすごかったので、
朝と夕方を中心にお散歩。
最近のあたらしいこと
もやしのナムルをホットクックで作った