当前位置: 首页 > 知识库问答 >
问题:

在Google Sheets电子表格中按名称排序工作表的脚本

颛孙子民
2023-03-14

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

我拼凑了一个脚本,我认为可以通过增加文件号(例如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);
}

共有2个答案

仲霍英
2023-03-14
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张纸保持不变,之后的任何一张纸都要进行相应的排序。这是一种更整洁的做法

郑卜鹰
2023-03-14

不管出于什么原因,这段代码确实有效。也感谢@tehhowch的帮助。

 类似资料:
  • 我有一个谷歌电子表格,里面有多张表格,我想把每一张表格复制到一个新的电子表格中,并在一个特定的单元格中以文本命名新的电子表格。我很高兴运行脚本多次,所以我想让它复制活动表。 即。我所拥有的=称为“颜色”的电子表格——工作表1=“红色”,工作表2=“蓝色”,工作表3=“黄色”,等等。 我想要什么= 名为“红色”的电子表格。电子表格叫做"蓝色",电子表格叫做"黄色" 到目前为止,我有这个脚本,但它告诉

  • 我试图通过电子表格发送电子邮件。脚本从电子表格中的工作表中获取电子邮件和电子邮件正文。当此工作表是第一个工作表时,脚本工作正常。然而,出于我不想深入讨论的原因,我需要另一张表格作为第一张。我试过使用: var ss=电子表格应用程序。活跃起来。表(); var表=ss.getSheetByName('电子邮件'); 然而,当我这样做时,我得到了信息 TypeError:在对象工作表中找不到函数ge

  • 可编辑链接-https://docs.google.com/spreadsheets/d/1vrzchTHVwwzc9wgFGmtc_zBsh27CEtE7KOyeNDuLwC0/edit?usp=sharing 发布至网页-https://docs.google.com/spreadsheets/d/e/2PACX-1vRaJd3YpKnemAneU47RI58m7cxQsYFdViFBxJPV

  • 我有一个用于Google Sheets的“onEdit”脚本,但只希望它在一张工作表上工作: 如何更改脚本,使其仅在工作表中的一张工作表上工作?

  • 我有多张表格需要排序,它们需要按不同的列排序。这是我当前正在运行的脚本: 我想添加另一个范围排序列,这样它将首先按第10列排序,然后按第17列排序。我似乎不能让它自动排序2列。任何帮助将不胜感激!

  • 问题内容: 我正在将一些数据写入Excel文件,但是我不知道如何调整代码以便能够控制要写入的工作表: 而不是,我该怎么说(这是VBA语法的样子……)? 问题答案: 你应该用 PS:您应该检查工作表中是否包含工作表名称