基于Google表格参考码自动链接Google Drive对应PDF规格文件的方案问询
解决方案
1. 修改Drive文件遍历脚本(支持递归三级目录)
原脚本仅能遍历单层级文件夹,替换为以下递归遍历版本,可自动筛选目标规格PDF并提取参考码:
function listAllSpecsFiles() { const topFolderId = "xxxxxxxxxxxxxxxxxxx"; // 替换为你的"Cars For Sale"顶级文件夹ID const ar = [["Name", "ID", "Reference Code"]]; // 新增参考码列用于匹配 // 递归遍历文件夹的内部函数 function traverseFolder(folder) { // 处理当前文件夹下的文件 const files = folder.getFiles(); while (files.hasNext()) { const file = files.next(); const fileName = file.getName(); // 筛选带"specs"的PDF文件 if (fileName.includes("specs") && file.getMimeType() === "application/pdf") { // 从文件名提取ABC####格式的参考码 const refCodeMatch = fileName.match(/ABC\d{4}/); if (refCodeMatch) { ar.push([fileName, file.getId(), refCodeMatch[0]]); } } } // 递归遍历子文件夹 const subFolders = folder.getFolders(); while (subFolders.hasNext()) { traverseFolder(subFolders.next()); } } // 启动遍历顶级文件夹 const topFolder = DriveApp.getFolderById(topFolderId); traverseFolder(topFolder); // 将结果写入指定表格 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("Filenames Script"); sheet.clear(); sheet.getRange(1, 1, ar.length, ar[0].length).setValues(ar); }
- 核心改动:递归遍历所有子文件夹,自动提取文件名中的参考码,结果新增第三列存储参考码,方便后续表格匹配
2. 表格超链接公式适配
在目标表格的对应列(如B列)输入以下公式(以B2为例),下拉填充至所有行:
=IFNA(HYPERLINK(CONCATENATE("https://drive.google.com/file/d/",INDEX('Filenames Script'!$B:$B,MATCH($A2,'Filenames Script'!$C:$C,0))),$A2),"无对应文件")
- 逻辑说明:通过A列的参考码匹配
Filenames Script表第三列的参考码,获取对应PDF的Drive文件ID,生成可直接点击的超链接;无匹配时显示提示文本
3. 操作步骤
- 在Google表格的脚本编辑器中,替换原
listFilesInFolder函数为上述新脚本
- 在Google表格的脚本编辑器中,替换原
- 运行
listAllSpecsFiles函数(首次运行需授权Drive访问权限)
- 运行
- 在目标表格的B2单元格输入公式,下拉填充完成批量超链接生成
现有资源适配说明
- 原单层遍历脚本替换为递归版本后,可完全适配你的三级文件夹结构,无需手动指定子文件夹
- 原公式针对表格链接设计,修改后的公式简化了逻辑,直接匹配Drive文件ID,无需
IMPORTRANGE调用
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

