Google apps script 当表单数据添加到行中时,自动在行中生成下拉列表
因此,我有一个函数,可以获取表单事件提交,并将特定字段移动到单独的工作表中。现在,我需要能够添加一个下拉菜单到第一行,其中包含一些选项,例如(“新建”、“完成”、“待定”)。是否有通过函数向单元格添加下拉列表的方法 这是我的工作代码:Google apps script 当表单数据添加到行中时,自动在行中生成下拉列表,google-apps-script,google-sheets,google-sheets-macros,Google Apps Script,Google Sheets,Google Sheets Macros,因此,我有一个函数,可以获取表单事件提交,并将特定字段移动到单独的工作表中。现在,我需要能够添加一个下拉菜单到第一行,其中包含一些选项,例如(“新建”、“完成”、“待定”)。是否有通过函数向单元格添加下拉列表的方法 这是我的工作代码: function AM2(e) { var form_name = "Form Responses 1"; var open_name = "OPEN"; var workbook = SpreadsheetApp.getActiveSpreadsh
function AM2(e) {
var form_name = "Form Responses 1";
var open_name = "OPEN";
var workbook = SpreadsheetApp.getActiveSpreadsheet();
var form_ws = workbook.getSheetByName(form_name);
var open_ws = workbook.getSheetByName(open_name);
open_ws.appendRow(['',e.values[1],'',e.values[2]]);
}
根据我的发现,我认为我可以使用SpreadsheetApp.newDataValidation().requireRewaminList(['NEW','COMPLETE','PENDING',true)
我在想我可以这样做:
function AM2(e) {
var form_name = "Form Responses 1";
var open_name = "OPEN";
var workbook = SpreadsheetApp.getActiveSpreadsheet();
var form_ws = workbook.getSheetByName(form_name);
var open_ws = workbook.getSheetByName(open_name);
open_ws.appendRow(open_ws.appendRow([SpreadsheetApp.newDataValidation().requireValueInList(['NEW', 'COMPLETE', 'PENDING'], true).build(),e.values[1],'',e.values[2]]);
}
但这不起作用并导致错误。我找不到任何文档可以告诉我如何在向工作表追加行的同时添加下拉列表
也许有一种方法可以获取appendRow()
的范围。如果我能得到这个,我可能可以解决这个错误
有什么想法吗?问题:
作为appendRow()
的一部分,您将无法执行此操作。您需要使用setDataValidation()
来实现这一点,它必须用于范围
对象
解决方案: 在追加行后直接添加数据验证规则
var row = open_ws.appendRow(['NEW',e.values[1],'',e.values[2]]).getActiveRange().getRow();
//set data validation
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['NEW', 'COMPLETE', 'PENDING'], true).build();
open_ws.getRange(row, 1).setDataValidation(rule);
如您所见,我已经使用您的代码在var rule
中构建了验证规则,然后我们所需要做的就是使用追加行上的getActiveRange().getRow()
获取新追加行的范围,然后使用setDataValidation(rule)
设置验证
参考:
appendRow()处理的行?这将防止重复问题。据我所知,在appendRow()中不可能。但是,如果您希望在每个条目上应用此验证,为什么不将其应用于整个列,而不是每次提交表单时都进行验证?我最终将构建一些功能,当选择下拉选择“完成”时,这些功能将自动将行移到“完成”选项卡。因此,我希望能够处理onFormSubmit运行的函数中的所有内容。也就是说我可能在整排都能做到。是否有一个字段可以将默认值设置为NEW
?是否确定无法检测当前正在追加的范围appendRow()
?使用getRanges()
对rangeList
对象,它返回一个range
对象数组。