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








ディスカッション
コメント一覧
まだ、コメントがありません