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

Google Apps Script:如何仅提取特定前缀文件名的文件信息

解决方案

核心优化点

  • 增加文件名筛选逻辑:使用字符串startsWith()方法过滤以"x"开头的文件
  • 解决超时问题:将单次逐行写入改为批量写入,大幅减少与表格服务的交互次数

修改后的完整代码

function listFolderContents() {
  var foldername = 'Salesforce Images';
  var folderlisting = 'listing of folder ' + foldername;
  
  var folders = DriveApp.getFoldersByName(foldername);
  var folder = folders.next();
  var contents = folder.getFiles();
 
  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  
  // 初始化数据数组,先存入表头
  var data = [['name', 'link']];
  
  var file;
  var name;
  var link;
  
  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    // 筛选以"x"开头的文件(区分大小写)
    if (name.startsWith('x')) {
      link = file.getUrl();
      data.push([name, link]);
    }
  }
  
  // 批量写入所有数据,替代逐行appendRow
  if (data.length > 1) { // 确保有筛选到的文件
    sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
  }
}

关键说明

  1. 筛选逻辑:

    • name.startsWith('x') 严格匹配以小写"x"开头的文件名
    • 如果需要忽略大小写(比如匹配"X"开头的文件),可以修改为:
      if (name.toLowerCase().startsWith('x'))
      
  2. 超时问题解决:

    • 原脚本中sheet.appendRow()会在每次循环时向服务器发送请求,35000次请求极易触发超时限制
    • 修改为将所有符合条件的数据存入数组后,通过setValues()一次性写入,仅需1次服务器请求,效率提升显著

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 13:41:01