我使用 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/