我有2个谷歌表单。用户填写任意一个google表单,它就会填充2 " active "在同一工作表中的选项卡,以记录用户的响应。我想使用一个脚本移动行到一个"完成";
此脚本用于非表单响应;但是我并没有在现场表演中失败。
谢谢!
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "active" && r.getColumn() == 1 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("complete");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName() == "complete" && r.getColumn() == 1 && r.getValue() == false) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("active");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
问题;onEdit简单触发器只有在用户使用Google Sheets UI进行编辑时才会被激活。使用表单提交触发器代替简单的编辑触发器。
将此函数添加到绑定到电子表格的脚本中
function onFormSubmit(event){
onEdit(event)
}
在绑定到电子表格的脚本上创建一个表单提交触发器。
在这种情况下,表单提交函数可以调用onEdit函数,因为编辑事件对象和表单提交对象具有onEdit函数上使用的相同属性,souce
,range
,并且显然复选框设置在第一列上,因此Range.getColumn() === 1
和Range.getValue()
将在两个触发器上返回相同的值。如果复选框位于不同的列上,则应该进行一些更改或使用两个不同的函数。相关的
- 通过勾选复选框自动移动Google表单响应 参考
- https://developers.google.com/apps-script/guides/triggers