首页 > 解决方案 > 根据两列对行进行排序

问题描述

我有一个谷歌工作表,我需要根据第 9 列和第 3 列对行进行排序,我已经在其他具有类似参数的工作表上运行了这个脚本,并且它已经工作(使用 onEdit 和 onOpen)。我不断收到此错误类型错误:取消读取 null 的属性“getSheetByName”(第 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 / 编码背景。只是自学帮助我的公司自动化日程安排等。

标签: sortinggoogle-apps-scriptgoogle-sheetsscripting

解决方案


尝试:

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}]);
}

在此处输入图像描述


推荐阅读