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

Google Apps Script文件按名排序、后缀过滤 固定输出到Sheets

优化实现方案

核心修改点

针对原有脚本的两个需求,调整逻辑如下:

  • 新增后缀过滤:遍历文件时校验文件后缀,仅保留配置列表内的后缀文件,自动兼容后缀大小写差异
  • 固定输出顺序:先收集所有符合要求的文件信息,再按文件名字母序统一排序后再组装写入数据,避免Google Drive原生返回文件顺序不稳定的问题

修改后完整代码

// 按需配置要保留的文件后缀,无需带前缀点,统一写小写即可
const ALLOWED_EXT = ['pdf', 'docx', 'xlsx', 'png'];

const list = [['ID']];
const matchedFiles = [];
const files = expofd.getFiles();

// 遍历文件,过滤符合后缀要求的条目
while (files.hasNext()) {
  const file = files.next();
  const fileName = file.getName();
  // 提取文件后缀,兼容多段点文件名、无后缀文件场景
  const ext = fileName.includes('.') ? fileName.split('.').pop().toLowerCase() : '';
  if (!ALLOWED_EXT.includes(ext)) continue;
  // 暂存文件名和ID,用于后续排序
  matchedFiles.push({
    name: fileName,
    id: file.getId()
  });
}

// 按文件名字母升序排序,结果固定
matchedFiles.sort((prev, next) => prev.name.localeCompare(next.name));

// 组装写入表格的二维数组
matchedFiles.forEach(fileItem => list.push([fileItem.id]));

// 保持原有写入位置不变:从B2单元格开始写入数据
sh.getRange(2, 2, list.length, list[0].length).setValues(list);

使用说明

  • 如果不需要后缀过滤、要获取文件夹下所有文件,直接删除后缀判断的if (!ALLOWED_EXT.includes(ext)) continue;这行即可
  • 排序逻辑使用localeCompare实现,对英文、中文文件名都能输出符合常规阅读习惯的固定排序结果,不会出现每次运行顺序变动的问题
  • 调整ALLOWED_EXT数组内的后缀值,即可自定义需要抓取的文件类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:01:01