web-dev-qa-db-ja.com

Googleフォーム、回答フィールドを読み取り専用にする

フォームの受信者が変更/表示できないように、Googleフォームの回答フィールドの1つを読み取り専用または非表示にしたいのですが。

それは可能ですか?

ここにコンテキストがあります

したがって、基本的に私の最終的な目標は、 Googleフォーム 機能を活用して、受信者にアンケートを送信し、 応答スプレッドシート で回答を追跡することです。

ここまでは順調ですね...

ここで、私に課せられた2つの制約を紹介します。

  1. 受信者に送信されるフォームには、受信者に関する情報が事前に入力されている必要があります。

  2. フォームにアクセスするために各受信者に提供されるURLは、フォームに提供された回答を送信し、後で更新するために使用されます。

2番目の制約は注意が必要です...一般的な方法は、 事前に入力されたURL を生成して受信者に送信し、受信者がフォームに回答したら、確認ページを表示して提供することです。 Edit Url を使用して、回答を更新します(最後に更新された回答はすでに入力済みです)。

私の場合、2番目のURL(Edit Url)を提供することはできません。これは1回限りのことです。受信者ごとに1つのURLを提供します。受信者は、同じURLを使用して質問に回答し、更新する必要があります。後で必要になった場合に使用します。

この機能はGoogleでサポートされていないため、スプレッドシートから読み取るスクリプトを作成し、各行のデータを使用して指定のフォームに事前に入力し、各フォームを送信してから、受信者ごとに編集URLを生成して挿入する必要がありました。スプレッドシートの[URLの編集]列にあります。これで、受信者にURLを渡すことができ、受信者はそのURLを何度も使用して、アンケートの回答を更新できるようになります。

次に、非表示/読み取り専用フィールドに戻ります。私のスプレッドシートには、受信者ごとに一意の英数字の値があります。フォームに渡して、回答したときに(回答は回答スプレッドシートに記録されます)、この一意の「ID」で各受信者を識別できるようにします。

私はここにたくさん書いてきましたが、人々が正確かつ思慮深い方法で互いに助け合うことができるように、人々に文脈を与えることが重要であることを私は知っています。

8
Cyzanfar

ユーザーがフォームの一部を表示しないようにする方法。

まず、必要な質問を作成します。必要な質問は、質問に回答しない限り、ユーザーが次のページに移動できないようにします。

質問への回答がユーザーに送信ページへの移動のみを許可するように、質問を設定します。

したがって、少なくとも3ページあります。

  • 1ページ目が入力されます
  • 非表示になる中間ページ
  • 最後のページは送信ページです。

ユーザーがその中間ページにアクセスできないように設定できます。送信ページに移動するために、オプションが1つしかない必須の質問を作成します。

また、必要な質問を事前に入力して、「管理目的のみ」というタイトルや、移動を続けるように指示するタイトルを付けることができます。

彼らは「続行」ボタンをクリックし、「非表示」入力のあるページをスキップして、「送信」ページに直接移動します。

[続行]ボタンをクリックせずに質問に回答すると、質問は[送信]ページに移動するように設定されているため、[送信]ページにも移動します。いずれにせよ、送信ページに移動します。

8
Alan Wells

更新:Googleではスクリプトごとに20トリガーの制限があります。これは、このソリューションが20フォーム応答以下を生成するシナリオでのみ機能することを意味します。

最後に、これを理解しました。

まず、複数選択オプションを使用してフォームを作成します。このコードは、それがフォームの最初の項目であることを前提としています。

var readonlyValue = 'some unique ID';
var form = FormApp.openById('get the ID from the form in edit mode');
var formResponse = form.createResponse();
items = form.getItems();
var readonlyId = items[0].getId();
var readonlyItem = form.getItemById(readonlyId);
readOnlyItem.asMultipleChoiceItem().setChoiceValues([readonlyValue]); 
formResponse.withItemResponse(readonlyItem.asMultipleChoiceItem().createResponse(readonlyValue));      
formUrl = formResponse.submit().toPrefilledUrl();
//formUrl, now has a link to the form with your unique value: pre-filled and pre-selected
4
Rahul Varshney

フォームに含めることができ、データを収集するためのものではないアイテムは次のとおりです。

他のすべての項目は入力を目的としており、「読み取り専用」にすることはできません。

1
Mogsdad