通过勾选复选框自动移动Google表单响应



我有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() === 1Range.getValue()将在两个触发器上返回相同的值。如果复选框位于不同的列上,则应该进行一些更改或使用两个不同的函数。相关的

  • 通过勾选复选框自动移动Google表单响应
  • 参考

  • https://developers.google.com/apps-script/guides/triggers

最新更新