【问题标题】:Script to move an entire row to from a Google form responses sheet to another sheet based on cell value根据单元格值将整行从 Google 表单响应表移动到另一表的脚本
【发布时间】:2021-09-02 12:18:27
【问题描述】:

我正在尝试使用以下代码根据单元格值将整行从 Google 表单响应表移动到另一个表,但是由于某种原因它不起作用。如果我在另一张纸上运行它,它工作得很好。有什么建议吗?


 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var s = event.source.getActiveSheet();
 var r = event.source.getActiveRange();

 if(s.getName() == "Jobs" && r.getColumn() == 6 && r.getValue() == "Complete") {
   var row = r.getRow();
   var numColumns = s.getLastColumn();
   var targetSheet = ss.getSheetByName("Completed");
   var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
   s.getRange(row, 1, 1, numColumns).moveTo(target);
   s.deleteRow(row);
 }
}```


【问题讨论】:

  • 在任何给定的电子表格中只能有一个名为 onEdit() 的函数。有没有可能是您遇到的问题?

标签: forms google-sheets


【解决方案1】:

运行触发器时,活动工作表通常默认为电子表格的第一张工作表

解决方案:

而不是定义

 var s = event.source.getActiveSheet();
 var r = event.source.getActiveRange();

使用事件对象range:

 var r = event.range;
 var s = r.getSheet();

另外,您的if 条件是 if(s.getName() == "Jobs"...)。所以很明显,您只会为实际称为"Jobs" 的工作表输入if 代码块,而不是其他工作表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多