请求编写Google Sheets脚本自动导入匹配文件名的Drive文件链接
符合需求的Google Apps Script实现
以下是满足你需求的脚本,包含自动触发配置说明:
脚本代码
function importDriveFileLinks() { // 配置参数 - 替换为你的表格ID、工作表名称和Drive文件夹ID const SPREADSHEET_ID = '你的表格ID'; const SHEET_NAME = 'Sheet1'; // 替换为你的工作表名称 const DRIVE_FOLDER_ID = '你的Drive文件夹ID'; const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID); const sheet = spreadsheet.getSheetByName(SHEET_NAME); // 获取BA列从第3行开始的所有文件名(排除空行) const baColumnData = sheet.getRange('BA3:BA').getValues().flat().filter(name => name !== ''); const rowCount = baColumnData.length; if (rowCount === 0) return; // 没有需要匹配的文件名,直接退出 // 获取指定Drive文件夹内的所有文件,建立文件名到链接的映射 const folder = DriveApp.getFolderById(DRIVE_FOLDER_ID); const files = folder.getFiles(); const fileMap = new Map(); while (files.hasNext()) { const file = files.next(); const fileName = file.getName(); fileMap.set(fileName, file.getUrl()); } // 准备要写入BB列的数据 const bbColumnValues = baColumnData.map(name => [fileMap.get(name) || '']); // 将结果写入BB列从第3行开始的位置(BB列对应第54列) sheet.getRange(3, 54, rowCount, 1).setValues(bbColumnValues); }
关键功能说明
- 精准匹配逻辑:读取BA列的文件名,与Drive文件夹内的文件名精确匹配,匹配成功则将对应文件链接写入BB列
- 全格式支持:自动识别文件夹内所有格式的文件,无需针对特定格式过滤
- 高效批量处理:一次性读取和写入数据,减少API调用次数提升运行效率
自动触发设置
方式1:表格内容变更时触发
- 在Google Sheets中打开脚本编辑器(扩展程序 > Apps 脚本)
- 点击左侧菜单栏的「触发器」图标
- 点击「添加触发器」按钮
- 配置选项:
- 选择要运行的函数:
importDriveFileLinks - 选择部署类型:「Head」
- 选择事件源:「从电子表格」
- 选择事件类型:「编辑时」
- 点击保存并完成授权
- 选择要运行的函数:
方式2:定时自动运行
如果需要定期同步文件链接,可设置定时触发:
- 事件源选择「时间驱动」
- 事件类型选择适合的频率(如每天、每小时等)
注意事项
- 替换代码中的
你的表格ID、你的Drive文件夹ID为实际ID - 确保脚本拥有Drive和Sheets的访问权限(首次运行时会提示授权)
- 文件名匹配需完全一致(包括大小写、后缀名)
内容的提问来源于stack exchange,提问作者Charlotte Verbrugge
相关产品推荐
相关产品推荐

