google-apps-script - 在 Google Sheets 电子表格中按名称对工作表进行排序的脚本

标签 google-apps-script google-sheets

我使用 Google 表格电子表格来管理我正在处理的文件。我在任何给定时间都有大约 60-70 个文件,每个文件都有一个唯一的文件编号。每个文件在我的电子表格中都由一个以其文件号命名的唯一工作表表示。文件编号符合以下格式:[#]-[##]-[####](例如 5-18-0040)。我还有一个名为"file"的工作表,它是所有这些工作表和一些其他隐藏工作表(其中包含操作)的列表。

我拼凑了一个脚本,我原以为可以通过增加文件编号(例如 1-15-0023、2-16-1924、3-14-2012、5-17-0040)对这些工作表进行排序,然后推送文件表和那些隐藏的表开始。然而,这不起作用。它肯定会在某种程度上移动纸张,但我最终还是得到了乱序的纸张。

任何人都可以看一下这段代码并告诉我什么可能会失败吗?例如,我是否需要将名称指定为整数(如果需要,如何?)或者是否有其他原因可能阻止此脚本工作?

function sortSheets () {
  var sheetNameArray = [];
  var sheets = ss.getSheets(); 
  for (var i = 0; i < sheets.length; i++) {
    sheetNameArray.push(sheets[i].getName());
  }
  sheetNameArray.sort(); 
  for( var j = 0; j < sheets.length; j++ ) {
    ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
    ss.moveActiveSheet(j + 1);
  }
  ss.setActiveSheet(ss.getSheetByName("Files"));
  ss.moveActiveSheet(1);
  ss.setActiveSheet(ss.getSheetByName("Court Information"));
  ss.moveActiveSheet(2);
  ss.setActiveSheet(ss.getSheetByName("Timelines"));
  ss.moveActiveSheet(3);
  ss.setActiveSheet(ss.getSheetByName("Template"));
  ss.moveActiveSheet(4);
  ss.setActiveSheet(ss.getSheetByName("Sheet Operators"));
  ss.moveActiveSheet(5);
}

最佳答案

function sortSheets () {
  var sheetNameArray = [];
  var sheets = ss.getSheets(); 

  if (sheets.length <= 2){
    return;
  }

  for (var i = 3; i < sheets.length; i++) {
    sheetNameArray.push(sheets[i].getName());
  }

  sheetNameArray.sort(); 

  for( var j = 0; j < sheetNameArray.length; j++ ) {
    ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
    ss.moveActiveSheet(j + 4);
  }
}

对于我的问题,我希望前 3 个保留,之后的任何工作表都进行相应排序。这是一种更简洁的方法

关于google-apps-script - 在 Google Sheets 电子表格中按名称对工作表进行排序的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50746526/

相关文章:

google-apps-script - 如何使用 Apps 脚本指定 Google 表单目标的电子表格选项卡名称

if-statement - 在 ARRAY 中使用 VLOOKUP 搜索另一本 Google Sheets 图书

google-apps-script - 如何在谷歌脚本编辑器中的1到30(31,按月)单元格中自动设置整个月的日期和天数?

google-apps-script - Google 应用程序脚本触发器不起作用

google-apps-script - 在 Google AppS 脚本中从本地加载或读取 JSON

javascript - Google App 功能 - 重新计算/刷新值

javascript - 对所选文本使用 replaceText(),而不是 Google 文档的整个元素

google-apps-script - 强制刷新 ImportXML

sql - Google 表格 - 从所选选项卡进行查询

filter - 如何过滤非空白行?