如何用Apps Script将Google表单提交的文件链接转为文件芯片?
解决Google表单提交文件超长链接转文件芯片的问题
方案1:直接在原提交表(Submissions)自动转换
这个方案会在表单新提交数据时,自动把文件链接转成紧凑的文件芯片,无需额外表格。
function onFormSubmit(e) { // 获取触发事件对应的行 const row = e.range.getRow(); const sheet = e.source.getSheetByName('Submissions'); // 指定要转换的列范围(E到K列,对应第5到第11列) const startCol = 5; const endCol = 11; // 遍历指定列处理链接 for (let col = startCol; col <= endCol; col++) { const cell = sheet.getRange(row, col); const fileUrl = cell.getValue(); // 只处理有效的Google Drive文件链接 if (fileUrl && typeof fileUrl === 'string' && fileUrl.includes('drive.google.com')) { // 创建文件芯片公式 const chipFormula = `=HYPERLINK("${fileUrl}", "${getFileTitle(fileUrl)}")`; cell.setFormula(chipFormula); } } } // 辅助函数:从文件链接提取文件名 function getFileTitle(url) { try { const fileId = url.match(/[-\w]{25,}/)[0]; const file = DriveApp.getFileById(fileId); return file.getName(); } catch (e) { // 无法获取文件名时返回默认文本 return "文件"; } }
操作步骤:
- 打开你的「Submissions」表格
- 点击顶部菜单栏的「扩展程序」→「Apps脚本」
- 清空脚本编辑器里的默认代码,粘贴上面的代码
- 点击编辑器顶部的「保存」按钮,随便给项目起个名字(比如
FileChipConverter) - 点击左侧菜单栏的「触发器」图标(时钟样式)
- 点击「添加触发器」,按以下配置设置:
- 选择要运行的函数:
onFormSubmit - 事件源选「电子表格」,事件类型选「表单提交」
- 点击「保存」,按提示完成授权(第一次授权需要允许脚本访问你的Drive和表格)
- 选择要运行的函数:
方案2:处理第二张表的E-K列(第2到50行)
如果坚持要用第二张表,这个脚本会自动把指定范围内的文件链接转成文件芯片。
function convertToFileChips() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('你的第二张表名称'); // 替换为实际表名 const startRow = 2; const endRow = 50; const startCol = 5; // E列 const endCol = 11; // K列 const range = sheet.getRange(startRow, startCol, endRow - startRow + 1, endCol - startCol + 1); const values = range.getValues(); // 批量生成文件芯片公式 const formulas = values.map(row => { return row.map(cell => { if (cell && typeof cell === 'string' && cell.includes('drive.google.com')) { try { const fileId = cell.match(/[-\w]{25,}/)[0]; const fileName = DriveApp.getFileById(fileId).getName(); return `=HYPERLINK("${cell}", "${fileName}")`; } catch (e) { return `=HYPERLINK("${cell}", "文件")`; } } return cell; }); }); // 把公式批量写回表格 range.setFormulas(formulas); } // 可选:创建定时触发器自动更新 function createTimeTrigger() { ScriptApp.newTrigger('convertToFileChips') .timeBased() .everyMinutes(5) // 每5分钟检查一次,可按需修改频率 .create(); }
操作步骤:
- 打开包含第二张表的表格
- 进入Apps脚本编辑器,粘贴代码,把
你的第二张表名称替换成实际表名 - 保存项目后,先手动运行一次
convertToFileChips测试效果(点击编辑器顶部的运行按钮) - 如果需要自动更新,运行
createTimeTrigger创建定时触发器,或者手动添加触发器(事件源选「时间驱动」,按需设置频率)
注意事项:
- 脚本需要授权访问你的Google Drive,用来获取文件名
- 只有有效的Google Drive文件链接才能转换,其他链接会保持原样
- 多人协作表格中,确保脚本授权账号有访问所有提交文件的权限
内容的提问来源于stack exchange,提问作者Kim
相关产品推荐
相关产品推荐

