Google Formの回答ページを作る際に、回答者に同じ情報を続けて2回入力させて、その2つの入力内容が相違した時に、エラーメッセージを表示させて、それが修正されるまでは回答の完了をさせないようにしたい。
解決したいこと
Google Formの回答ページを作る際に、回答者に同じ情報を続けて2回入力させて、その2つの入力内容が相違した時に、エラーメッセージを表示させて、それが修正されるまでは回答の完了をさせないようにしたい。例えば電話番号を入れさせる際に、2回同じものを入力させて、その2つに相違があれば入れ間違いだと表示したい。
発生している問題・エラー
そもそもGoogle Formのフォーム開発ツールの標準機能にはこの機能が無いらしく、scriptなどで対応するしかないらしい。
該当するソースコード
一例(ただし、実装の方法がわからない)
function onFormSubmit(e) {
var form = FormApp.getActiveForm();
var responses = form.getResponses();
var response = responses[responses.length - 1];
var itemResponses = response.getItemResponses();
var firstResponse = itemResponses[0].getResponse();
var secondResponse = itemResponses[1].getResponse();
if (firstResponse == secondResponse) {
// OK
} else {
// 同じ綴りではない場合の処理
var formResponse = form.createResponse();
var items = form.getItems();
for (var i = 0; i < items.length; i++) {
var item = items[i];
formResponse.withItemResponse(item.asTextItem().createResponse(""));
}
formResponse.submit();
}
}
自分で試したこと
ChatGPTで以下の質問をしたところ、いくつかの回答を得たが、どれを試してもNGであった。
そもそも回答に書かれたオプションが存在しない。
また、scriptを工夫すればできそうな感触はあるが、そもそもscriptを実装した経験が無くて、
正しい実装方法が確立できない。
ChatGPTに質問した内容
「google formを使用して同じ内容を2回入力させて、かつその2つが同じ綴りである場合にのみokとするフォームを作成できますか」
回答1 https://chat.openai.com/share/9c4c574b-b258-4476-a361-8ca86fc5a23c
→この通りscriptを作ったが、実際にやってみても何も起こらなかった(2項目作って違う情報を入れてみたが、すんなり登録されてしまった)
回答2
Google フォームにアクセスします。
質問の追加ボタン(+)をクリックして、テキスト入力欄の質問を追加します。
質問の設定アイコン(歯車のアイコン)をクリックして、質問の設定を開きます。
「回答の種類」を「テキスト」に設定します。
「2 つ目の回答を要求」オプションを有効にします。これにより、同じ内容を2回入力するようになります。
「回答の検証」オプションを有効にします。
「正規表現」を選択します。
「正規表現パターン」には、以下の正規表現を入力します:^(.*)$
(この正規表現は、入力されたテキストが任意の文字列であることを表しています)
「2 つ目の回答と比較する」オプションを有効にします。
「同じである場合」を選択します。
「必須にする」オプションを有効にします。
質問の設定を保存します。
他の質問やフォームの設定を追加して、フォームを完成させます。
フォームの共有方法を選択し、必要な場合は回答者にフォームへのアクセス権を提供します。
→ 「「2 つ目の回答と比較する」オプションを有効にします。」とあるが、そのようなオプションは存在しない
その他、いくつも"Regenerate response"で他の回答を得たが、存在しないオプションばかり出てくる。
この場でChatGPTの評価をするつもりはないが、第一希望はフォーム作成時の何らかのオプションで実現、第二希望はscriptで解決です。
あまり込み入った機能を要求している認識はないのですが、どなたかこの実装に成功した方のknowledgeを共有させていただけませんでしょうか。