求Google Apps Script脚本:复制带超链接的表格行至另一工作表
Google Apps Script自动复制表单提交数据到指定工作表
实现步骤与代码
- 打开你的谷歌表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑器。
- 删除默认代码,粘贴以下脚本:
function onFormSubmit(e) { // 获取当前表格实例 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 定位目标工作表 const responsesSheet = ss.getSheetByName("Responses"); const targetSheet = ss.getSheetByName("Sheet1"); // 获取表单刚提交的那一行(通过事件对象直接获取,避免多人提交时的行号误差) const submittedRow = e.range; // 提取需要的单元格:K列是第11列,M列第13列,V列第22列 const kCell = submittedRow.getCell(1, 11); const mCell = submittedRow.getCell(1, 13); const vCell = submittedRow.getCell(1, 22); // 获取单元格内容 const kValue = kCell.getValue(); const mValue = mCell.getValue(); // 提取V列的超链接和显示文本 const vHyperlink = vCell.getHyperlink(); const vDisplayText = vCell.getValue(); // 找到Sheet1的下一个空白行 const nextEmptyRow = targetSheet.getLastRow() + 1; // 写入A、B列 targetSheet.getRange(nextEmptyRow, 1).setValue(kValue); targetSheet.getRange(nextEmptyRow, 2).setValue(mValue); // 写入C列并保留可点击超链接 if (vHyperlink) { // 用HYPERLINK公式创建带链接的单元格 targetSheet.getRange(nextEmptyRow, 3).setFormula(`=HYPERLINK("${vHyperlink}", "${vDisplayText}")`); } else { // 如果V列没有超链接,直接写入文本 targetSheet.getRange(nextEmptyRow, 3).setValue(vDisplayText); } }
设置自动触发的触发器
- 在脚本编辑器左侧,点击「触发器」图标(闹钟样式)。
- 点击「添加触发器」,按以下配置:
- 选择要运行的函数:
onFormSubmit - 选择事件源:「从电子表格」
- 选择事件类型:「表单提交」
- 选择要运行的函数:
- 点击「保存」,按照提示完成授权(首次授权需要手动允许脚本访问你的表格数据)。
关键说明
- 用事件对象
e获取提交行:比手动找最后一行更可靠,避免多人同时提交时出现行号错误。 - 超链接保留:通过
getHyperlink()提取V列的链接地址,再用HYPERLINK公式在Sheet1的C列生成可点击的链接,完全保留原链接功能。 - 适配无链接情况:如果V列没有超链接,会直接写入原文本,避免报错。
内容的提问来源于stack exchange,提问作者SB Promo Vids
相关产品推荐
相关产品推荐

