フォームの送信ごとに一意のIDを追加しています。今、私はそのIDを最初のフィールドにし、このフィールドを変更しないようにユーザーに求めるヘルプテキストとともに、IDを事前に入力しました。このオプションをユーザーに表示できないオプションはありますか?
ユーザーがフォームに入力する前にプログラムで一意のIDを割り当てる方法にのみ興味があると思います。
いいえ、Google Formsは、HTMLフォームにあるような隠しフィールドを直接サポートしていません。唯一のオプションは カスタムスタイリング ルートであるように見えますが、これはすでに知っています。
うまく機能しない2つの有望なアイデアを以下に示します。
削除された質問に事前入力します。フォームから質問を削除すると、回答スプレッドシートに残ります-残念ながら、Formsは削除された質問の値を抑制します事前に入力されたURLで表示されます。そうしないと、一意のIDをだまして送信することができます。 (これは賢い回避策かもしれないと思ったが、うまくいかなかったことに失望した。)
スキップされたページに質問を事前入力する1。2番目のページに質問を設定して、ライブフォームがスキップするように設定できます。また、質問の事前入力URLを生成することもできます。これまでのところ、非常に良い-しかし、ユーザーが実際にそのページに移動しない場合、事前に入力された応答は送信されません。
1古いフォーラムのこのトピックに関する 前の議論 の間にこのアイデアを主張した@AdamLに感謝します。
Googleフォームから直接これを行うことはできませんが、回避策はあります。
次のコードをデフォルトのCode.gsファイルに挿入します。 (これは基本的にindex.htmlテンプレートを開きます。)
doGet(e) { return HtmlService.createTemplateFromFile('index').evaluate(); }
フォームのソースコードで新しいindex.htmlファイルを作成します。
style="display:none"
_をその囲む_<div>
_に追加して、入力フィールドを非表示にします<?= your_gscript_code() ?>
を使用して、テンプレート情報を_<input value="">
_フィールドに挿入しますこのソリューションを使用すると、カスタムスタイルを適用でき、Googleがホストするフォームを維持しながら、他の不要なhtml要素を削除することもできます。
私はあなたの問題の解決策を見つけたと思います。フォームデータが送信されるシート上のスクリプトは、フォーム送信時にトリガーできます。その後、送信された各行の「範囲」をコピーして増分できます。
*編集、サンプルコードが要求されました。このコードを機能させるには、Googleアプリスクリプトのリソースメニューを使用して「トリガーをインストール」し、「フォーム送信時に」「スプレッドシートから」を使用する必要があります。私がやっていることを次のスニペットに煮詰めました。
function myFormUpdates(e) {
var spreadsheet = SpreadsheetApp.getActive()
//select the sheet you're form is going to post data to
var sheet = spreadsheet.setActiveSheet(spreadsheet.getSheets()[1])
//select the last row and a unused column
var cell = sheet.getRange(sheet.getLastRow(), 3)
//set data
cell.setValue('Data')
}
最善の方法は、右上隅の設定に移動して[電子メールアドレスの収集]をクリックすることです。収集されませんが、検証機能があり、電子メールでフィルター処理された短い回答の質問に回答するように求めます。