Google Sheets onEdit 函数

Google Sheets onEdit function

在我每天使用的传播sheet 中,在 Excel 中,我有一个宏,如果 F 列中的单元格显示 "Cleared",它会自动移动整行数据。我对 Visual Basic 比较满意,但是在转向 Google Sheets 时,我了解到使用了 Javascript,这是我以前从未使用过的。

我发现了一些其他人编写的代码,并在我的 sheet 中将变量更改为 运行 所需的内容,但是它告诉 "source" 属性 无法在代码的第 6 行(大概也是第 7 行)中读取。

如果您能为此提供任何帮助,我将不胜感激,并将 "Learn 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);
    }
}

问题是,据我所知,"source" 没有被定义为任何东西。

同样如前所述,您需要将变量 event 输入到函数中。

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 是一个触发器,如果​​您在电子表格中编辑某些内容,它会自动运行您的脚本。

希望对您有所帮助。