问题描述
我正试图使Google表单根据1种表单输入的数据填充包含多行的电子表格:
- 表单简单,客户信息最少https://docs.google.com/forms/d/1LrKlVuI7kxVU0lxz70Uu-2Obj4x3qIwe6nS-ErzbCAg/
- 根据客户所需的选定零件数量(目前为1、2或3),表格转到通过零件名称和标识号https://docs.google.com/spreadsheets/d/1kAsgrB-2swL_tWYyXF5GLLX2PkVrkHYkcKr9eaQ8gnI/edit?usp=sharing输入1、2或3的部分
输入后,我需要让Forms在工作表(或格式化工作表)中输入数据,如下所示: -输入的每个零件(1、2或3)应在同一行中具有相同的客户名称
- 表格编辑器然后可以在额外的行中输入数据,例如“交货日期”和“项目价格”
短: 提交了1个表格,3个问题,3行
p.s。单元格着色仅用于指出行之间的公共数据
解决方法
一种选择是执行以下操作:
#1。安装onFormSubmit触发器:
安装一个附加到电子表格的onFormSubmit触发器,以便在每次提交附加到电子表格的表单时都运行一个函数(假定您的表单已附加到电子表格)。
可以在these steps或programmatically之后手动安装触发器。要以编程方式安装触发器,请通过单击Tools > Script editor
打开绑定到电子表格的脚本,然后复制一次执行此功能:
function createTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger("submitData")
.forSpreadsheet(ss)
.onFormSubmit()
.create();
}
每次提交表单时,这将触发一个名为submitData
的函数。接下来,将是写函数,该函数应以所需的格式附加提交的数据。
#2。将提交的数据追加到工作表的功能:
为了将通过表单提交的数据追加到名为Formated responses
的表单上,您需要使用相应的event object,其中包含提交的数据。您可以使用它来检查提交了多少部分以及其相应字段的值。然后,可以使用方法appendRow将此数据附加到工作表中。
可能是这样的:
function submitData(e) {
var sheet = SpreadsheetApp.getActive().getSheetByName("Formated responses");
var res = e.namedValues;
var numberOfParts = res["Number of parts"][0];
var mainFields = [res["Timestamp"][0],res["Client name"][0],numberOfParts];
switch (numberOfParts) {
case '1':
var fieldsOne = [res["Part identification number"][0],res["Part name"][0]];
sheet.appendRow(mainFields.concat(fieldsOne));
break;
case '2':
var fieldsTwo = [res["#1 part identification number"][0],res["#1 part name"][0]];
sheet.appendRow(mainFields.concat(fieldsTwo));
fieldsTwo = [res["#2nd part identification number"][0],res["#2nd part name"][0]];
sheet.appendRow(mainFields.concat(fieldsTwo));
break;
case '3':
var fieldsThree = [res["#1st part identification number"][0],res["#1st part name"][0]];
sheet.appendRow(mainFields.concat(fieldsThree));
fieldsThree = [res["#2nd part identification number"][1],res["#2nd part name"][1]];
sheet.appendRow(mainFields.concat(fieldsThree));
fieldsThree = [res["#3rd part identification number"][0],res["#3rd part name"][0]];
sheet.appendRow(mainFields.concat(fieldsThree));
break;
}
}
注意:
- 可以简化函数
submitData
(可以删除switch
,而改用for
循环),但是Form字段的名称与每个字段不一致其他,阻碍了这一选择。因此,该功能具有大量重复。我建议您修复字段名称并稍微重写一下函数。