从Google Sheets URL地址提取对应电子表格标题的自动化实现方案
对应需求的两类实现方案
内置函数方案
- 适用场景:少量链接,无需自定义逻辑,直接单元格引用
- 公式写法(B2单元格输入后下拉填充):
=DRIVEFILE(A2).name - 注意事项:
- 当前登录账号需对A列对应表格拥有查看及以上权限,否则返回
#N/A - 链接带分享后缀(如
usp=sharing)时可自动识别有效ID,无需手动清理 - 首次使用需完成Google账号授权
- 若所在区域暂未开放
DRIVEFILE函数,可使用下方AppsScript自定义函数替代
- 当前登录账号需对A列对应表格拥有查看及以上权限,否则返回
Google Apps Script方案
可分为两种使用形式:自定义函数、批量运行脚本
形式1:自定义函数(用法和内置函数一致)
- 打开当前表格「扩展程序 > Apps Script」,粘贴以下代码后保存:
function GET_SHEET_TITLE(url) { try { const fileId = url.match(/[-\w]{25,}/)?.[0]; return DriveApp.getFileById(fileId).getName(); } catch (e) { return "无权限或链接无效"; } } - 返回表格B2单元格输入公式
=GET_SHEET_TITLE(A2)后下拉即可
形式2:批量运行脚本(适合大量链接/自动更新场景)
- 在AppsScript编辑器粘贴以下代码,可按需修改
START_ROW(数据起始行)参数:function batchGetTitles() { const START_ROW = 2; const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 读取A列所有非空链接 const lastRow = sheet.getLastRow(); const links = sheet.getRange(`A${START_ROW}:A${lastRow}`).getValues(); // 批量生成标题数组 const titleList = links.map(([link]) => { if (!link) return [""]; try { const fileId = link.match(/[-\w]{25,}/)?.[0]; return [DriveApp.getFileById(fileId).getName()]; } catch (e) { return ["无权限或链接无效"]; } }); // 批量写入B列 sheet.getRange(`B${START_ROW}:B${lastRow}`).setValues(titleList); } - 保存后手动运行一次
batchGetTitles函数,完成账号授权即可批量生成所有标题 - 可配置AppsScript时间驱动触发器,实现A列新增链接后定时自动更新B列标题
内容的提问来源于stack exchange,提问作者xtract studio
相关产品推荐
相关产品推荐

