の続きです。
こちらの記事では
- メールフォームなどでお申し込み
- 参加者各人にGoogleフォームを用いてレンタルの有無などをご記入頂く
- スプレッドシートに自動保存
- 自動的にGoogleカレンダーに登録
という流れを実現しました。
今回はさらに
- 申込が新規ゲストからの場合のみ、顧客名簿に自動で登録
までを自動化したいと思います。
前回同様、GoogleAppsScriptを用いて実現します。
実現したいことを紐解く
今回実現したいことを、より具体的に紐解いてみましょう。
前回は以下の様な流れでした。
- 参加者各人がGoogleフォームを用いて情報を入力
- 自動的にプログラム稼働
- フォームの回答が保存されるシート情報を取得
- 使用するGoogleカレンダーの情報を取得
- フォームの回答から名前と申込日を取得
- Googleカレンダーで、名前をタイトルにして申込日に新たな終日の予定を追加
- 申込日が複数日に渡る場合は、複数日に渡る予定として追加
これに加えて今回は
- 顧客名簿の情報を取得
- フォームの回答から名前と生年月日を取得
- 顧客名簿に名前を生年月日が一致する人が存在どうかを判定
- 存在しない場合にのみ顧客名簿に情報を追加
という流れです。
尚、今回は、氏名と生年月日が完全に一致する人はいない、という前提でこの条件としました。
確率的には同姓同名で同一生年月日もありえる点をご留意下さい。
膨大な顧客を抱える金融機関でさえ氏名と生年月日で個人を判断する様なので、問題はないと思いますが…
ちなみに、あるグループの中に自分と同じ誕生日の人が居る確率は1/365ですが、あるグループの中に誕生日が一致するペアが存在する確率、これはそのグループの人数によります。
グループ内に同じ誕生日のペアが居る確率=1-グループ内に同じ誕生日のペアが居ない確率
となるので、グループの総数が23人(少なっ!)で50%、70人で99.9%となります。
つまり、ダイビングショップの顧客名簿ぐらいの母数でも、ほぼ100%の確率で誕生日が一致するペアが居るはず、ということです。
ただ、そこに生まれ年と、世界でも有数の名字大国と言われる日本の姓、多種多様な名、と考えていくと、一気に絶望的な確率になります。
ちなみに、日本で最も多い名前は『田中実さん』だとか…
脱線しました。
保存されている大量のデータの中から特定の値を検索したり、存在チェックをしたり…
この辺りの動作に関しては、やはりそれを専門とするデータベースの方に優位性があるなーと思いつつ構築してみました。
完成品
申込のデータから顧客名簿に登録する部分が、やたら長ったらしくなっています。
申込フォームでデータが保存されるそれぞれの列と、顧客名簿のそれぞれの列が一致、または並びが一緒であれば1行で書けるのですが…
使用するフォーム
この最後の設問で
『初めて』にチェックが入っている場合にのみ名簿に登録する
という挙動であればよっぽど楽だったのですが、可能性として
過去に使ったかどうかわからない→『わからない』
過去に使っているのに間違えて『初めて』
ということも十分あり得るように感じたので、ここでの回答は信じないことにしました(笑)
参加者がフォームへ回答
※名前などの情報は適当です。最初こそ仮名っぽい名前で行きましたが、途中から諦めました(笑)
自動的にカレンダーへ追加
顧客名簿に同一人物がいない場合のみ自動で追加
これで新規顧客が多い真夏も早く寝ることが出来ますね!(笑)
今回は他にも
- Googleカレンダーでスケジュール確定時、スプレッドシートに自動的に保存
- 申込情報と確定スケジュール情報からログデータ記入シートを自動生成
- 名字から名前を予測入力
この辺りを構築しているので、またの機会にご紹介させて頂きたいと思います!
他にも
『こんなことって実現できる?』
というご質問等、どしどし受け付けておりますのでお気軽にどうぞ!
※ダイビング業界関係者に限ります。
※お問合せはトップページ下部のフォーム、もしくはフッター記載のメールアドレスまで!