【问题标题】:Sort rows based on two columns根据两列对行进行排序
【发布时间】:2020-03-20 15:51:27
【问题描述】:

我有一个谷歌工作表,我需要根据第 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 / 编码背景。只是自学帮助我的公司自动化日程安排等。

【问题讨论】:

  • 你是怎么调用函数的?

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


【解决方案1】:

尝试:

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

【讨论】:

  • 您好,我收到了同样的错误,现在就在第 2 行。
  • 我复制了你的工作表,它对我来说很好用:i.stack.imgur.com/oSXzK.png 确保你通过正确的项目应用它
  • 所以,经过一堆谷歌搜索后,我只想问,如何确保将其分配给正确的电子表格?我可以在我的项目视图中看到我所有的脚本在蓝色箭头后面都有绿色方块,除了这个项目。
  • 让我与您分享一张工作表.​​..授权脚本,看看它是否适合您 - docs.google.com/spreadsheets/d/…
  • 我进入并选择了工具>脚本编辑器>创建一个新项目,它工作。感谢您的帮助!在不久的将来我可能会遇到一些更复杂的问题。
最近更新 更多