【问题标题】:Automatic sort multiple columns once entire row of data is entered输入整行数据后自动对多列进行排序
【发布时间】:2017-08-26 14:32:54
【问题描述】:

我设计了一个谷歌电子表格来帮助提高物流效率。我想按 2 个不同的列自动对数据进行排序,以便在输入整行数据后优先考虑需要首先接收的关键部分。我遇到的问题是,只要您输入我要排序的列之一,数据就会排序,但我要排序的列不是需要输入的该行数据的最后一列。我正在尝试使用 if 语句在输入最后一列之前不执行排序,否则会抛出一条错误语句,指出您必须在此列中输入数据才能继续。从逻辑上讲,代码对我来说很有意义,但我对计算机语言只有足够的理解。我一直在第 10 行收到一个错误,即找不到该范围。我相信我的错误是尝试调用最后一列的语法。任何帮助将不胜感激

**function autosort(){
 
 // Variable Declaration
 var sheet = SpreadsheetApp.getActiveSpreadsheet();
 
 var NewsheetName = SpreadsheetApp.getActiveSheet().getName();
 
 var sheetName = sheet.getSheetByName(NewsheetName);
 var lastCol = sheetName.getLastColumn();
 var lastColBlank = SpreadsheetApp.getActiveSheet().getRange(lastCol).isBlank()
 // Find range to sort
 var range = sheetName.getRange("A2:G");
 // Sorting algorithm
 if (lastColBlank == false ){
 range.sort([6,5]);
 
 }
 
 else {
 throw ("error: If trailer # is unavailable, please enter N/A");
 
 }
}**

【问题讨论】:

    标签: javascript c++ sorting computer-science google-sheets-api


    【解决方案1】:

    试试这个代码:

    function onEdit() {
    
     var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var editedCell = sh.getActiveRange().getColumnIndex();
    
      if(editedCell == 2) { 
        var range = sh.getRange("A2:B10");
        var blank = range.isBlank()
    
        var values = range.getValues();
        Logger.log(values)
        for (var i = 0; i<values.length; i++) {
        //values.length returns 11 for eleven items
        // values[10][0] would be the 11th row 1st column
          Logger.log(values[i][1])
        if (values[i][0] ==  "" || values[i][1] ==  "") {
          //throw new Error("error: If trailer # is unavailable, please enter N/A");
          var ui = SpreadsheetApp.getUi();
          var response = ui.alert('If trailer # is unavailable, please enter N/A');
        }else{
          range.sort({column: 2});
        }
      }
    
      }
    }
    

    如果您查看代码,排序取决于要编辑的第二列。然后,将检查范围是否仍然是空白单元格。

    只需应用您的附加代码来实现您的目标,我认为这会奏效。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多