30分で作れる!セミナー受付がラクになる自動システム (3/4)
2014年04月16日 11時00分更新
参加者にリマインダーメールを送る
フォームを受け付けた際にメールを送るだけでなく、セミナーの当日にリマインダーメールを送ることで、うっかり忘れて欠席といったミスを防げます。メール送信部分の関数はそのまま使い回して、リマインダーメールの送信処理を作ってみましょう。
まず、フォームのデータを保存するスプレッドシートを開きます。フォームの「回答」メニューから「回答を表示」を選んでください。「回答を表示」が見当たらない場合は、「回答先を選択する」メニューを選び、現れたダイアログで「新規スプレッドシート」を選択して「作成」ボタンをクリックします。
スプレッドシートを開いたら、「ツール」メニューから「スクリプト エディタ...」を選んで、スクリプトエディタを開きましょう。
スクリプトエディタが現れたら、上部の名前部分をクリックし、名前を入力します。ここでは「セミナー申し込みシート」としておきます。
スクリプトエディタに、リスト3とリスト2を記述します。リスト3を記述した後に、先ほどのリスト2をコピー&ペーストすればいいでしょう。なお今回のクリプトは、スプレッドシートの最初のシートにデータが保存されている前提で作成(spreadsheet.getSheets()[0]と指定している)してあります。2枚目以降のシートにデータがあると正しく動きません。
リスト3
function reminder() {
var namecolumn = 4;
var mailcolumn = 6;
var title = '【本日開催】「米国Webマーケティングのいま」セミナーのご案内';
var spreadsheet = SpreadsheetApp.openById('☆スプレッドシートのID☆');
var sheet = spreadsheet.getSheets()[0];
var rowcount = sheet.getLastRow();
var namerange = sheet.getRange(2, namecolumn , rowcount).getValues();
var mailrange = sheet.getRange(2, mailcolumn , rowcount).getValues();
for(var i = 0;i < rowcount;i++){
var username = namerange[i][0];
var usermail = mailrange[i][0];
if (username != ''){
sendMailToUser(title, username, usermail);
}
}
}
「☆スプレッドシートのID☆」の部分には、現在開いているスプレッドシートのIDを指定します。IDとは、Googleドライブの各ファイルに割り当てられている識別用の記号です。URLからも取り出せますが、確実に取り出すためのスクリプトを使います。開いているGoogleスプレッドシートのスクリプトエディタに以下の関数を追記してください。
リスト4
function checkId(){
Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}
「実行」メニューから、「checkId」を選び、実行します。実行後、「表示」メニューの「ログ」メニューを選ぶと、このスプレッドシートのIDが出力されていますので、それをコピーして使いましょう。
トリガーを設定する
リマインダーを送るスクリプトが完成したら、セミナー当日に実行するように設定しましょう。スクリプトエディタの「リソース」メニューから「現在のプロジェクトのトリガー」を選び、トリガーの設定ダイアログを呼び出します。「トリガーが設定されていません……」のリンクをクリックして、以下のようにトリガーを用意します。
「reminder」「時間主導型」「特定の日時」
これで、決まった日時にスクリプトを実行するようにできます。その下の「YYYY-MM-DD HH:MM 形式の日付」のところに、実行する日時を指定します。例えば、「20014-07-07 07:00」と記入すれば、2014年7月7日の午前7時にスクリプトが実行されるようになります。セミナーの前日や当日の朝に実行するようにしておくとよいでしょう。
なお、保存の際には、例によってアクセス権の承認が必要となりますので、要求されたリクエストを許可してください。
このreminder関数では、フォームから送信された内容を保存しているスプレッドシートから、名前とメールアドレスの値を取り出し、それを基にすべてのメールアドレスにメールを送信しています。サンプルに合わせ、D列に名前、F列にメールアドレスが記録されている前提で処理を作成しています。
var namecolumn = 4;
var mailcolumn = 6;
この部分で、それぞれ名前とメールアドレスが記録されているカラムを指定しています。これらの値を変更し、sendMailToUser関数でメールの内容を書き換えれば、オリジナルのフォームでも同様の処理ができるようになります。カスタマイズに挑戦してみましょう。