【发布时间】:2015-02-03 17:37:30
【问题描述】:
我创建了一个 Google 表单,我需要在现有电子表格中为我从该表单收到的每个回复创建一个新工作表 - 每个受访者都会在电子表格中生成一个新工作表。这可以通过某种 onSubmit 命令实现吗?我对 Javascript 完全陌生,但愿意学习。非常感谢您的帮助。
【问题讨论】:
标签: google-apps-script google-sheets google-forms
我创建了一个 Google 表单,我需要在现有电子表格中为我从该表单收到的每个回复创建一个新工作表 - 每个受访者都会在电子表格中生成一个新工作表。这可以通过某种 onSubmit 命令实现吗?我对 Javascript 完全陌生,但愿意学习。非常感谢您的帮助。
【问题讨论】:
标签: google-apps-script google-sheets google-forms
在将数据写入电子表格之前,您无法拦截 Google 表单提交。您所能做的就是在将数据插入电子表格后对其进行操作。因此,您的回复将被放入电子表格中,一开始就在一张纸上。你无法改变它。
现在的问题是,您想操作绑定到表单还是绑定到工作表的代码中的数据?您需要使用绑定到工作表的项目。
这是一些示例代码:
此代码假定您要为工作表命名的值在 A 列中 函数 subTheForm() { Logger.log('提交跑');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
//Get last row of data
var lastRow = sheet.getLastRow();
var colA_Data = sheet.getRange(lastRow, 1).getValue();
//var thisUser = 'theUserName';
ss.insertSheet(colA_Data);
};
旧答案:
每次提交新表单时,您都需要生成某种唯一的字符串。我不知道你想要什么。您可以获取用户名,然后将日期/时间添加到其中,然后将每个新工作表命名为用户名和时间。基本代码如下所示:
function submit(){
Logger.log('submit ran');
var thisUser = 'theUserName';
var ss = SpreadsheetApp.getActive().insertSheet(thisUser);
};
注意Logger.log(); 语句。这会在LOG上打印一些东西。在代码编辑器中,您可以选择 VIEW 菜单,然后选择 LOGS 菜单项来显示 LOG。
您还可以通过选择函数名称并单击运行箭头图标从代码编辑器“手动”运行代码。这样您就可以运行代码而无需每次都提交表单。让代码工作,然后将其连接到 onsubmit 触发器。
【讨论】:
为此,您可以使用此命令 (getActiveSpreadsheet()) 获取电子表格,然后根据您需要的此 page 的参数创建一个新工作表。您可以在 onSubmit 触发器中添加这行代码。
希望有帮助!
【讨论】: