Googleフォームでのチケット予約で、あいうえお毎の予約番号を発行する
Googleフォームを使って、オンラインチケット発行サービスを準備しています。
GoogleフォームとGoogle Apps Scriptで自動返信つきチケット予約
受付担当から、あ行、か行、毎の予約番号を発行して欲しいとリクエストを受けました。単純な受付番号だと、名簿から探すのが一苦労だという事でした。
これは、受付用の名簿をなんとかすれば良いのですが、複数の名簿を用意するのはちょっと面倒です。ちなみに、電子的な受付ではなく、印刷された名簿での、アナログ的受付を想定しています。
あいうえお順の印刷された名簿しかなくても、「あ-1」などとなっていれば、少しは探しやすくなります。
この実現のために、Google Apps Scriptを使っています。Googleフォームと連動したスクリプトの設定方法は、下記ページの「4.Googleフォームから自動返信(コピペでOK)」をご覧ください。
この時に使用したスクリプトは下記です。
function checkForm() { Logger.log('checkForm() debug start'); //------------------------------------------------------------ // 設定エリアここから //------------------------------------------------------------ // ふりがな分類用正規表現 var yomi_rex = [ ["あ", /^[あ-おぁ-ぉ]/], ["か", /^[か-こが-ご]/], ["さ", /^[さ-そざ-ぞ]/], ["た", /^[た-どだ-どっ]/], ["な", /^[な-の]/], ["は", /^[は-ほば-ぼぱ-ぽ]/], ["ま", /^[ま-も]/], ["や", /^[や-よゃゅょ]/], ["ら", /^[ら-ろ]/], ["わ", /^[わをん]/], ]; //------------------------------------------------------------ // 設定エリアここまで //------------------------------------------------------------ try{ // スプレッドシートの操作 var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getLastRow(); var cols = sheet.getLastColumn(); var rg = sheet.getDataRange(); // 設定項目 var COL_FURIGANA = 6 // ふりがな var COL_REGISTNUM = 7 // 申し込み番号 var ticket = { "name":rg.getCell(rows, 2).getValue(), // 名前 "mail":rg.getCell(rows, 3).getValue(), // メールアドレス "zip":rg.getCell(rows, 4).getValue(), // 郵便番号 "phone":rg.getCell(rows, 5).getValue(), // 電話番号 "yomi":rg.getCell(rows, 6).getValue(), // ふりがな }; // ふりがな登録済ふりがなを基に、予約番号を求める var y = 0; for ( var rx in yomi_rex ) { var rn = Number(rx) if( ticket["yomi"].match(yomi_rex[rn][1]) ) { for (var j = 2; j <= rows; j++) { // Logger.log("r="+j,"c="+(rn+14)); if( rg.getCell(j, COL_FURIGANA).getValue().match(yomi_rex[rn][1]) ) { // ふりがなのカラムをスキャンする y++; } } ticket["group"] = yomi_rex[rn][0]+"-"+String(y); break; } } rg.getCell(rows, COL_REGISTNUM).setValue(ticket["group"]) // 予約番号をスプレッドシートに登録 Logger.log("Ticket=", ticket); // メール送信 }catch(e){ // エラー処理 Logger.log(e, "rows="+rows+" cols="+cols+" 【失敗】例外発生"+"Ticket=", ticket); } }
こんな感じで設定して、試してみました。
フォームに入力した送信ボタンを押します。フォームが送信された時点で、上記スクリプトが起動され、スプレッドシートに、予約番号が記録されます。
同じ名前で登録して「あ-1」「あ-2」と記録されました。この結果をメールで送信したり、名簿で確認できます。
今回、Google Apps Scriptで、初めてコーディングしました。かなり苦労しました。スクリプトエディタにはデバッガ機能も搭載されているので、スクリプト完成までの助けになりました。
正規表現の比較には、次のページを参考にしています。ありがとうございます。
[amazonjs asin="B07BNB1Z9L" locale="JP"]
ディスカッション
コメント一覧
まだ、コメントがありません