我正在为表单的每次提交添加一个唯一的ID。现在,我将该ID作为第一个字段,并使用ID预先填充它,并附上帮助文本,要求用户不要修改此字段。是否有任何选项无法向用户显示此选项?
答案 0 :(得分:23)
我认为您只对在用户填写表单之前以编程方式分配唯一ID的方式感兴趣。
不,Google表单仍然没有直接支持您在HTML表单中隐藏的字段。您唯一的选择似乎是您已经知道的custom styling路线。
以下两个有前途的想法是行不通的......
预先填写已删除的问题。如果您从表单中删除问题,它仍会保留在回复电子表格中 - 遗憾的是,表单会抑制预先显示的已删除问题的值已填充的网址,否则您将能够以这种方式将您的唯一ID欺骗到提交中。 (我认为这可能是一个聪明的解决方法,但对它不起作用感到失望。)
在跳过的页面 1 上预先填写问题。您可以在第二页上设置实时表单将跳过的问题,以及您还可以为该问题生成预先填写的网址。到目前为止,这么好 - 但如果用户实际上没有导航到该页面,则不会提交预先填写的回复。
1 感谢@AdamL,他在旧论坛的previous discussion期间提出了这个想法。
答案 1 :(得分:6)
您无法直接通过Google表单执行此操作,但您可以解决此问题:
将以下代码插入默认的Code.gs文件中。 (这基本上打开了index.html模板。)
doGet(e) {
return HtmlService.createTemplateFromFile('index').evaluate();
}
使用表单的源代码创建一个新的index.html文件。
style="display:none"
添加到其封闭的<div>
<input value="">
<?= your_gscript_code() ?>
字段
使用此解决方案,您可以应用任何自定义样式,甚至可以删除其他不必要的html元素 同时保持Google托管的表单。
答案 2 :(得分:1)
我想我找到了解决问题的方法。可以在表单提交时触发表单上可以触发表单数据的脚本。然后,您可以为提交的每一行复制并增加“范围”。
*编辑,请求示例代码。 为了使此代码正常工作,您需要使用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')
}
答案 3 :(得分:0)
最好的办法是转到右上角的设置,然后单击“收集电子邮件地址”,这不会收集它,但是它具有验证器,并要求受访者填写电子邮件过滤的简短回答问题
答案 4 :(得分:0)
我遇到了同样的问题,似乎还没有现成的解决方案。在Google决定支持隐藏字段之前,除了考虑其他不寻常的方法之外,我们别无选择。
我附带了其中之一。这不是最佳解决方案,但可以。忍受我。
在每种形式下,总会有一个具有唯一值的隐藏键。自己的ID。
如果您可以使用表单ID映射可跟踪的值,则说明您已经成功了一半。
这是我的问题,这是我所做的。
我需要与一组用户共享一个表单。所有表单都必须相同,并且允许用户与其他人共享表单链接。我想跟踪引荐,以便可以为每个具有唯一ID的一级学位用户预填充和自定义的隐藏字段,FD会是最佳选择。但这不起作用,所以我要做的是:
通过这种方式,我可以与每个单独的用户共享相同形式的许多“实例”(如果您已将电子邮件映射到推荐代码,也可以通过编程方式完成)。
提交任何表单时,其链接表都会更新。使用电子表格“在表单上提交”事件,我在GAS中运行了一个实用程序,该实用程序将所有值以及响应和表单的标识附加到作为摘要的特殊工作表上。这样,我只需要看一张纸就可以查看每种形式的所有结果并进行分析。
很显然,如果对原始模板表单进行了更改,则很难维持这一点。但是,对我来说,它只是临时解决方案。
希望有帮助。