生成超链接以预先填充Google表单
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成超链接以预先填充Google表单相关的知识,希望对你有一定的参考价值。
上下文:我使用Google表单的顺序阶段创建了Google表格/表单工作流程。
- 表格1(面向公众)接受公共用户提交的一些数据并保存到工作表1。
- 然后内部人员通过电话联系提交者并进行更深入的采访。
- 表格2(面向内部)由面试官用来记录电话采访的答案。
此问题与表单2的生成有关,因为我用表单1(表单1提交的内容)中的信息部分地预先填充了该表单。 "&entry.NNNNNN=whatever"
。我在工作表1的最后一列中复制了此公式。单击该单元格,然后生成的超链接按预期成功地使用工作表1的相应行中的数据预填充了表单2。
问题:一旦收到新的Form 1提交,就会在工作表1中插入新行,该行在最后一列中不包含所需的超链接公式。我希望这是自动的,所以面试官在每次要求填写表格2之前不负责抄写。
我已经采用了几种方法来实现这一点的自动化:
建议使用一个线程(而不是向下复制)在顶部单元格中创建一个数组公式,以便将其应用于包括新插入的行在内的整个列。我尝试了所有可以想到的方法,但无法使用公式用arrayformula()生成结果列。如果有解决此问题的方法,那将是一个令人满意的解决方案。
=HYPERLINK(CONCATENATE("https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXX/viewform?usp=pp_url&entry.251357138=",C2,"&entry.966351469=",D2,"&entry.384696201=",E2,"&entry.1366694528=",F2,"&entry.463407115=",M2,"&entry.1557144679=",B2,if(P2,"&entry.1777888516=Email",""),if(O2,"&entry.1777888516=Phone",""),if(H2,"&entry.2110474669=Individual+(Adult)",""),if(I2,"&entry.2110474669=Individual+(Under+18,+Minor)",""),if(J2,"&entry.2110474669=Couple",""),if(K2,"&entry.2110474669=Family",""),if(L2,"&entry.2110474669=Group",""),if(R2,"&entry.1892971721=San+Jose",""),if(S2,"&entry.1892971721=Sunnyvale","")), "Complete Intake")
我试图创建一个ModalDialogue并在其中显示脚本生成的超链接。我使用了在此论坛中找到的这种方法。但这根本没有打开任何对话框,也没有引发任何错误(即使在删除超链接之后也是如此)。没有迹象表明弹出窗口被阻止。我脚本的其他部分使用Browser.msgBox不会出现任何弹出问题,但我认为这不会传递超链接。
var htmlOutput = HtmlService .createHtmlOutput('Click to <a href="' + customFillURL + '">open and prefill</a> intake interview form.') .setWidth(250) //optional .setHeight(50); //optional SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Ready to fill intake interview form:');
使用onFormSubmit()并在插入新行之后编写脚本的复制脚本。但是我一直无法弄清楚如何识别在Sheet 1中插入了哪一行。我看到有人在使用lastRow(),但是并不总是将其插入到最后一行中-通常它位于中间的某个地方。
请求:
- 帮助使arrayformula在我的情况下起作用。
- 或帮助ModalDialog显示脚本生成的超链接。
- 或有关如何识别表单提交插入的行的帮助。还是只需要确保该表仍按TimeStamp排序,然后就可以使用lastrow()了?
- 建议采用一种更清洁的方法到达同一位置(从工作表1中的一行数据生成一个预先填充的表格。]
感谢您阐明前进的道路。
您应该考虑使用ArrayForumlas将公式自动复制到第一列中具有值的其他行。
将此公式放在具有Google表单链接的列的第2行中。
=ARRAYFORMULA(
IF(ISTEXT(A2:A),
HYPERLINK(
CONCATENATE(
"https://docs.google.com/forms/d/e/XXXXXXXXXXXXXXXX/viewform?usp=pp_url&entry.251357138=",C2:C,"&entry.966351469=",D2:D
)),""))
如果需要更多示例,我在复制公式时写了tutorial。
事实证明,我能够成功采用方法2,即modalDialog。由于某种原因,当我第一次尝试时没有对话框出现,所以我不知道这种方法是否存在根本性的错误。我再次尝试,如下图所示,所以我想我只是有一些错别字。添加target="_blank"
有助于在新标签页中打开。
var htmlOutput = HtmlService
.createHtmlOutput('Click to <a href="' + customFillURL + '" target="_blank">open and prefill</a> intake interview form.')
.setWidth(250) //optional
.setHeight(50); //optional
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Ready to fill intake interview form:');
以上是关于生成超链接以预先填充Google表单的主要内容,如果未能解决你的问题,请参考以下文章