Google表格脚本在某些标签上有效,而在其他标签上不起作用

时间:2019-11-03 03:16:11

标签: google-apps-script google-sheets

我正在尝试使工作表自动化以根据日期对行进行排序,并在选中复选框时传输行。我弄清楚了传输部分,但是排序功能仅在我要删除的选项卡上起作用,而不在我保留的选项卡上起作用,而且我不明白为什么。

这里有几个可以同时使用的排序功能,但是我需要它们在选项卡上不起作用:

function onEdit(event) {
  // assumes source data in sheet named Active
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to colu 8 or H
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  //sort Active by oldest date at the top, using column D or 4
  
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();
  var columnToSortBy = 4;
  var tableRange = "A2:T99"; // What to sort.

  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy, ascending: true } );
  }
  
} 

并且:

function myFunction() 
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Active");
  var rows = sheet.getLastRow();
  var columns = sheet.getLastColumn();

  var sortedValues = sheet.getRange(2, 1, rows-1, columns).getValues().sort();

  sheet.getRange(2, 1, rows-1, columns).setValues(sortedValues);
}

排序在具有名称的选项卡上起作用,但不适用于称为“活动”和“已完成”的选项卡。借助自动化,我摆脱了命名的标签,而只有“活动”和“完整”。

我已经删除了完整功能上的传输,因为它工作得很好,我只是专注于排序,因为这似乎是个问题。

关于两个标签为何未排序的任何建议? 这是我正在处理的电子表格的副本: https://docs.google.com/spreadsheets/d/17VeCzfqAclxUN-kVIrWZSII-7clsNfttmVVU8s0JhFs/edit?usp=sharing

编辑:由库珀在下面解决。 最终代码可以满足我的需求:

function onEdit(event) {
  var sh=SpreadsheetApp.getActive().getSheetByName("Active");
  sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending:true});
}

1 个答案:

答案 0 :(得分:1)

尝试按第4列进行排序:

function myFunction() {
  var sh=SpreadsheetApp.getActive().getSheetByName("Active");
  sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).sort({column:4,ascending;true});
}

Sorting