我的Google电子表格脚本只运行一个函数。我编码脚本错了吗?
问题描述:
第一个函数可以正常工作并排序,但我不能获得第二个函数,该函数将该行存档为同时工作。我的Google电子表格脚本只运行一个函数。我编码脚本错了吗?
function onEdit(event){
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 10;
var tableRange = "J:J3"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort({ column : columnToSortBy, ascending: true });
function onEdit2(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Orders" && r.getColumn() == 10 && r.getValue() == "5. Archive") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
}
}
答
您在if语句块中定义了onEdit2(event)
,但是您从不执行它。
在这样的块内定义一个函数是不好的做法。你不能真的有条件地定义一个函数。 See this link for more information on why this is bad.
好像要执行的onEdit2
功能如果if
条件为真。
如果是这样,您应该定义全局函数,以便您可以从任何需要的位置执行该函数。
你可能想要做这样的事情:
function onEdit(event){
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 10;
var tableRange = "J:J3"; // What to sort.
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort({ column : columnToSortBy, ascending: true });
onEdit2(event); // Execute the function, passing it whatever event was passed to onEdit
}
} // End definition of onEdit
function onEdit2(passedEvent) { // Do the actual function definition out here
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = passedEvent.source.getActiveSheet();
var r = passedEvent.source.getActiveRange();
if(s.getName() == "Orders" && r.getColumn() == 10 && r.getValue() == "5. Archive") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
你是惊人的。我爱你。 (你刚给我一杯啤酒) – 2014-10-30 16:41:08
如果我要添加第三个功能。 它只是 onEdit3(通过事件); } } 函数onEdit3(PassedEvent){ 等 – 2014-10-30 16:53:09
您可以根据需要定义许多函数。如果全球定义,你可以从任何地方打电话给他们。所以是的,你可以添加'function onEdit3(passedEvent){//一些代码}',然后在'onEdit'中调用onEdit3(event);'如果你愿意的话。 – 2014-10-30 16:58:01