Javascript 谷歌网页编辑功能

Javascript 谷歌网页编辑功能,javascript,spreadsheet,Javascript,Spreadsheet,在我每天使用的电子表格中,我在Excel中有一个宏,如果F列中的单元格显示“已清除”,该宏将自动移动整行数据。我对VisualBasic比较熟悉,但是在转到Google工作表时,我知道使用了Javascript,这是我以前从未使用过的 我发现了一些其他人编写的代码,并将变量更改为在我的工作表中运行所需的变量,但是它告诉我在代码的第6行(可能还有第7行)中无法读取“source”属性 我非常感谢您在这方面提供的任何帮助,并将“学习Javascript”放在我的待办事项列表中 function on

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

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

我非常感谢您在这方面提供的任何帮助,并将“学习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);
    }
}
问题是,据我所知,“源”并没有被定义为任何东西

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

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


希望这有帮助。

您是否正在脚本编辑器中运行该函数?在该事件中,将出现未定义的
,因为触发该事件的不是编辑。对于调试,您可以将活动工作表和范围硬编码到函数中,或者在工作表中进行实际编辑。嗨,Robin,谢谢您的评论。脚本编辑器是我能看到的唯一运行函数的地方。您的意思是将其更改为:var s=getSheetByName(“动作跟踪器”);是的,没错<但是,当您或其他人编辑工作表时,code>onEdit()将自动运行。