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); } }
关键说明
筛选逻辑:
name.startsWith('x')严格匹配以小写"x"开头的文件名- 如果需要忽略大小写(比如匹配"X"开头的文件),可以修改为:
if (name.toLowerCase().startsWith('x'))
超时问题解决:
- 原脚本中
sheet.appendRow()会在每次循环时向服务器发送请求,35000次请求极易触发超时限制 - 修改为将所有符合条件的数据存入数组后,通过
setValues()一次性写入,仅需1次服务器请求,效率提升显著
- 原脚本中
内容的提问来源于stack exchange,提问作者JennyR
相关产品推荐
相关产品推荐

