2014-10-30 50 views
1

第一个函数可以正常工作并排序,但我不能获得第二个函数,该函数将该行存档为同时工作。我的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); 
      } 
     } 
    } 
} 

回答

0

您在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); 
    } 
} 
+0

你是惊人的。我爱你。 (你刚给我一杯啤酒) – 2014-10-30 16:41:08

+0

如果我要添加第三个功能。 它只是 onEdit3(通过事件); } } 函数onEdit3(PassedEvent){ 等 – 2014-10-30 16:53:09

+0

您可以根据需要定义许多函数。如果全球定义,你可以从任何地方打电话给他们。所以是的,你可以添加'function onEdit3(passedEvent){//一些代码}',然后在'onEdit'中调用onEdit3(event);'如果你愿意的话。 – 2014-10-30 16:58:01

相关问题