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

如何用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 "文件";
  }
}

操作步骤:

  1. 打开你的「Submissions」表格
  2. 点击顶部菜单栏的「扩展程序」→「Apps脚本」
  3. 清空脚本编辑器里的默认代码,粘贴上面的代码
  4. 点击编辑器顶部的「保存」按钮,随便给项目起个名字(比如FileChipConverter)
  5. 点击左侧菜单栏的「触发器」图标(时钟样式)
  6. 点击「添加触发器」,按以下配置设置:
    • 选择要运行的函数: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();
}

操作步骤:

  1. 打开包含第二张表的表格
  2. 进入Apps脚本编辑器,粘贴代码,把你的第二张表名称替换成实际表名
  3. 保存项目后,先手动运行一次convertToFileChips测试效果(点击编辑器顶部的运行按钮)
  4. 如果需要自动更新,运行createTimeTrigger创建定时触发器,或者手动添加触发器(事件源选「时间驱动」,按需设置频率)

注意事项:

  • 脚本需要授权访问你的Google Drive,用来获取文件名
  • 只有有效的Google Drive文件链接才能转换,其他链接会保持原样
  • 多人协作表格中,确保脚本授权账号有访问所有提交文件的权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:13:12