
[英]Create a new sheet in an existing spreadsheet for EACH RESPONSE from a Google Form
[英]Create new Google Sheet from Form Respoinses
我正在使用多页表单来完成4个任务,这些任务基于对第一页上第一个问题的第一个答复而完成不同的任务。 其中之一是根据表单响应创建一个新的工作表。 如果要根据问题“选择工人:”的响应尚未创建一个新工作表,然后将响应移至该工作表,我想创建一个新工作表。 我从另一个问题中找到了一个功能完美的函数,只是无法将工作表重命名为问题的答案,即“工人姓名”。
function onSubmit(e){
var sheet = e.range.getSheet();
var ss = sheet.getParent();
var form = FormApp.openByUrl(ss.getFormUrl());
// Choose destination sheet according to Select the worker:
var destSheet = getSheet(ss, e.namedValues['Select The Worker:']);
// Store the current response in destination sheet
destSheet.appendRow(e.values);
/**
* Get the sheet with given name. Create sheet if it doesn't exist.
* New sheet will be created with optional headings, if provided.
*
* From:
*
* @param {Spreadsheet} spreadsheet Google Spreadsheet object.
* @param {String} sheetName Sheet name to get.
* @param {String[]} headings Optional array of headings (for new sheet).
*
* @returns {Sheet} Sheet object.
*/
function getSheet( spreadsheet, sheetName, headings ) {
spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName(sheetName);
if (sheet == null) {
// Not found, so add new sheet
sheet = spreadsheet.insertSheet(sheetName);
if (headings && headings.constructor === Array) {
sheet.getRange(1,1,1,headings.length).setValues([headings]);
}
}
return sheet;
}
}
我不确定是否遗漏了一些东西。 任何帮助是极大的赞赏。
我认为问题在于namedValues
中的所有条目都是arrays 。 尝试将e.namedValues['Select The Worker:']
更改为e.namedValues['Select The Worker:'].toString()
根据Google Apps文档 ,表单提交对象函数.namedValues()
返回对象,您需要将变量或具有字符串数据类型的对象传递给方法.insertSheet(sheetname)
改为实施此。
var destSheet = getSheet(ss, e.namedValues['Select The Worker:'][0]);
您只需要指定对象内部数组的索引即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.