Googleフォームでのチケット予約で、あいうえお毎の予約番号を発行する

2022年2月6日パソコン・インターネット

Googleフォームを使って、オンラインチケット発行サービスを準備しています。

PIXTA受付

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"]

Posted by お市のかた