Google表格onEdit功能

时间:2016-02-10 17:26:27

标签: javascript spreadsheet

在我每天使用的电子表格中,在Excel中我有一个宏,如果F列中的单元格显示“已清除”,它将自动移动整行数据。我对Visual Basic比较熟悉,但是在转到Google表格时,我理解使用的是以前从未使用过的Javascript。

我找到了其他人编写的一些代码,并将变量更改为他们在我的工作表中运行所需的代码但是它告诉代码的第6行无法读取“source”属性(并且可能是行7也)。

感谢您提供的任何帮助,并将“学习Javascript”放在我的待办事项清单上!

function onEdit(event) {
// assumes source data in sheet named "Action tracker"
// target sheet of move to named "Cleared Action Points"
// test column with "Cleared" is col 6 or F
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

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

1 个答案:

答案 0 :(得分:0)

问题在于"来源"就我所见,我没有被定义为任何东西。

同样如前所述,您需要输入函数的变量事件

function onEdit() {
// assumes source data in sheet named "Action tracker"
// target sheet of move to named "Cleared Action Points"
// test column with "Cleared" is col 6 or F
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getActiveSheet();
  var r = ss.getActiveRange();
  var rows = r.getRow();
  var cell = s.getRange(rows, r.getColumn());

if(s.getName() == "Action Tracker" && r.getColumn() == 6 && cell.getValue() == "Cleared") {
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Cleared Action Points");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
  s.getRange(rows, 1, 1, numColumns).moveTo(target);
  s.deleteRow(rows);
}

}

此外,您不需要从任何地方运行此功能 - onEdit是一个触发器,如果​​您在电子表格中编辑某些内容,它将自动运行您的脚本。

希望这有帮助。