このページの本文へ

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);
    }
  }
}

Googleフォームのスクリプトエディタにリスト1、2を記述し、その回答が保存されているGoogleスプレッドシートのスクリプトエディタにリスト2、3を記述する。リスト2は両方に必要なので間違えないように!(リスト4、5については後述)

 「☆スプレッドシートのID☆」の部分には、現在開いているスプレッドシートのIDを指定します。IDとは、Googleドライブの各ファイルに割り当てられている識別用の記号です。URLからも取り出せますが、確実に取り出すためのスクリプトを使います。開いているGoogleスプレッドシートのスクリプトエディタに以下の関数を追記してください。

リスト4

function checkId(){
  Logger.log(SpreadsheetApp.getActiveSpreadsheet().getId());
}

 「実行」メニューから、「checkId」を選び、実行します。実行後、「表示」メニューの「ログ」メニューを選ぶと、このスプレッドシートのIDが出力されていますので、それをコピーして使いましょう。

「実行」メニューの「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関数でメールの内容を書き換えれば、オリジナルのフォームでも同様の処理ができるようになります。カスタマイズに挑戦してみましょう。

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています