根据两列对行进行排序

时间:2020-03-20 15:51:27

标签: sorting google-apps-script google-sheets scripting

我有一个google工作表,我需要根据第9列然后第3列对行进行排序,我已经在具有类似参数的其他工作表上运行了此脚本,并且该脚本已经起作用(都与onEdit和onOpen一起使用)。我不断收到此错误 键入错误:取消读取属性'getSheetByName'为null(第13行,文件“代码”)

这是脚本:

SHEET_NAME = "Railcars Archive";
SORT_DATA_RANGE = "A2:M";       // I have tried M with and without defined rows
SORT_ORDER = [
{column: 9, ascending: true},
{column: 3, ascending: true}
];

function onOpen(e){
  multiSortColumns();
}
function multiSortColumns(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE);
  range.sort(SORT_ORDER);
}

以下是工作表:https://docs.google.com/spreadsheets/d/1rzwjaSNYNzxwE8ac_QhRmi6d7XKev7ISHLg79VLuMz4/edit#gid=1374491574

我不能授予编辑权限,所有者不会授予编辑权限,而是一个相当简单的表单。我不明白为什么它不能在此特定工作表上运行,因为我已经在其他几个脚本上运行了该脚本而没有任何问题。我还要补充一点,我没有IT /编码背景。只是自学成才,以帮助我的公司使时间表等自动化。

1 个答案:

答案 0 :(得分:0)

尝试:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Railcars Archive");
var range = sheet.getRange("A2:M");

function onOpen(e)  {
  range.sort([{column: 9, ascending: true}, 
              {column: 3, ascending: true}]);
}

spread