You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按标签名称中的年月倒序排序Google Sheets工作表标签

按年月倒序排列Google Sheets工作表的Apps Script解决方案

你原来的代码默认按字母表顺序排序,会出现April排在January前的问题,无法匹配月份的时间顺序。以下是修改后可直接使用的代码:

function sortSheetsByDateDesc() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = ss.getSheets();
  // 存储符合「月份 年份」格式的工作表信息:[表名, 时间戳, 原工作表对象]
  const validSheets = [];
  // 如果你有固定不需要排序的表(比如汇总表、说明表),把表名写到下面的数组里,这些表会固定排在最前面
  const excludeSheetNames = ["汇总", "说明"];
  const excludeSheets = [];

  allSheets.forEach(sheet => {
    const sheetName = sheet.getName();
    // 先排除不需要参与排序的表
    if (excludeSheetNames.includes(sheetName)) {
      excludeSheets.push(sheet);
      return;
    }
    // 尝试将表名转换为日期
    const date = new Date(sheetName);
    // 检查是否是合法日期
    if (!isNaN(date.getTime())) {
      validSheets.push({
        name: sheetName,
        timestamp: date.getTime(),
        sheet: sheet
      });
    } else {
      // 不符合日期格式的表也放到排除列表里,你可以根据需要调整逻辑
      excludeSheets.push(sheet);
    }
  });

  // 按时间戳倒序排序:年份大的在前,同一年份月份大的在前
  validSheets.sort((a, b) => b.timestamp - a.timestamp);

  // 整理最终的排序顺序:先放排除的表,再放按时间排序的表
  const sortedSheets = [...excludeSheets, ...validSheets.map(item => item.sheet)];

  // 执行重排
  sortedSheets.forEach((sheet, index) => {
    ss.setActiveSheet(sheet);
    ss.moveActiveSheet(index + 1);
  });
}

使用说明

  • 打开你需要处理的Google Sheets文件,点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
  • 清空原有代码,粘贴上面的代码
  • 如果有不需要参与排序的固定工作表,修改excludeSheetNames数组里的内容,填入对应的表名即可
  • 点击保存按钮,给项目随便起个名字,然后点击运行按钮,第一次运行需要按照提示完成授权,授权完成后脚本就会自动完成工作表排序
  • 之后每个月新增工作表后,重新进入脚本编辑器运行一次即可

内容的提问来源于stack exchange,提问作者LindseyR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:45:03