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

如何基于最后修改时间调整Google Sheets中的工作表排序?

实现Google Sheets按工作表最后修改时间调整排序的方法

Google Sheets本身没有内置的自动按修改时间排序工作表的功能,但可以通过Google Apps Script实现需求,以下是具体步骤:

一、编写自定义脚本

  1. 打开你的活动日历表格,点击顶部菜单栏的「扩展程序」→「Apps Script」,进入脚本编辑器。
  2. 删除默认的myFunction代码,替换为以下脚本:
function sortSheetsByLastModified() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const allSheets = ss.getSheets();
  
  // 排除不需要参与排序的工作表(比如「未来活动工作表」)
  const citySheets = allSheets.filter(sheet => sheet.getName() !== "未来活动工作表");

  // 为每个城市工作表绑定最后修改时间
  const sheetsWithUpdateTime = citySheets.map(sheet => ({
    sheet: sheet,
    lastUpdated: sheet.getLastUpdated()
  }));

  // 按最后修改时间降序排序(最新修改的工作表排在最前)
  sheetsWithUpdateTime.sort((a, b) => b.lastUpdated - a.lastUpdated);

  // 重新调整工作表位置
  sheetsWithUpdateTime.forEach((item, index) => {
    ss.setActiveSheet(item.sheet);
    ss.moveActiveSheet(index + 1); // Google Sheets工作表索引从1开始
  });
}

脚本说明:

  • 先过滤掉「未来活动工作表」,只处理各城市专属工作表;
  • 获取每个城市工作表的最后修改时间,按时间从新到旧排序;
  • 根据排序结果重新调整工作表的位置,最新修改的表会移到最前面(对应你例子中伊斯坦布尔表更新后替代纽约表位置的需求)。

二、设置自动触发条件

为了让脚本在城市工作表更新时自动运行,需要添加触发器:

  1. 在脚本编辑器左侧点击「触发器」图标(时钟样式);
  2. 点击「添加触发器」,按以下配置设置:
    • 选择要运行的函数:sortSheetsByLastModified
    • 选择事件源:「从电子表格」
    • 选择事件类型:「表单提交」(因为你是通过Google表单录入活动,表单提交时触发最贴合场景;如果需要更实时的触发,也可以选「修改时」)
  3. 点击保存,按提示完成权限授权(需要允许脚本访问你的电子表格)。

三、自定义调整(可选)

如果你的需求不是单纯按时间降序,而是要将最新修改的表固定移到某个特定位置(比如原纽约表的固定位置),可以修改脚本中的排序逻辑:
比如假设纽约表原来在第2位,你可以在排序后将最新修改的表移到第2位,其余表顺延:

// 替换排序后的位置调整代码
const latestSheet = sheetsWithUpdateTime[0].sheet;
ss.setActiveSheet(latestSheet);
ss.moveActiveSheet(2); // 移到第2位

// 其余表按时间排序放在后面
sheetsWithUpdateTime.slice(1).forEach((item, index) => {
  ss.setActiveSheet(item.sheet);
  ss.moveActiveSheet(index + 3);
});

内容的提问来源于stack exchange,提问作者Umut Toygar Göz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:45:35