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 是一个触发器,如果您在电子表格中编辑某些内容,它会自动运行您的脚本。
希望对您有所帮助。
在我每天使用的传播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 是一个触发器,如果您在电子表格中编辑某些内容,它会自动运行您的脚本。
希望对您有所帮助。