如何通过Google Sheets脚本实现按钮触发跨工作表单元格取值赋值
解决方案
这个需求完全可以通过Google Apps Script实现,以下是完整操作步骤:
1. 打开脚本编辑器
打开你的Google表格,点击顶部导航栏的「扩展程序」>「Apps Script」,进入脚本编辑页面,删除编辑器中默认生成的myFunction相关代码。
2. 写入自定义脚本
将以下代码粘贴到编辑器中,根据你实际的单元格需求调整对应参数:
// 复制单元格值到Sheet2的核心函数 function copyToSheet2() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 定义源表和目标表名称,名称需要和你表格中的实际命名完全一致 const sourceSheet = spreadsheet.getSheetByName("Sheet1"); const targetSheet = spreadsheet.getSheetByName("Sheet2"); // 单元格映射规则:source为Sheet1中要读取的单元格,target为Sheet2中要写入的对应单元格 const copyRule = [ {source: "B2", target: "A2"}, {source: "B3", target: "B2"}, {source: "B4", target: "C2"}, {source: "D2", target: "D2"}, {source: "D3", target: "E2"}, {source: "D4", target: "F2"} ]; // 执行复制操作 copyRule.forEach(rule => { const cellValue = sourceSheet.getRange(rule.source).getValue(); targetSheet.getRange(rule.target).setValue(cellValue); }); // 可选:如果需要每次点击追加新行而非覆盖原有内容,删除上方执行复制的代码,使用下方代码即可 /* const valueList = copyRule.map(rule => sourceSheet.getRange(rule.source).getValue()); const nextEmptyRow = targetSheet.getLastRow() + 1; targetSheet.getRange(nextEmptyRow, 1, 1, valueList.length).setValues([valueList]); */ }
粘贴完成后点击编辑器顶部的保存按钮,给项目随便起个名字比如「单元格复制工具」,保存即可。
3. 给按钮绑定脚本
回到你的Google表格页面:
- 点击顶部菜单栏「插入」>「绘图」,画一个你喜欢的按钮样式,输入文字「添加到sheet2」,点击保存并调整到合适的位置
- 右键点击刚才插入的按钮,点击右上角的三个点图标,选择「分配脚本」,在弹出的输入框中输入函数名
copyToSheet2,点击确定
4. 测试功能
直接点击按钮,第一次使用会弹出授权提示,按照提示完成授权即可:如果出现「Google未验证此应用」的提示,点击「高级」>「前往[你的项目名](不安全)」,按照提示完成授权即可,脚本为你自己编写,仅会操作当前表格,不存在安全风险。
授权完成后再次点击按钮,就能看到Sheet1的对应值已经同步到Sheet2的指定位置了。
注意事项
- 工作表名称、单元格位置要和你实际的表格完全匹配,大小写敏感,写错会导致脚本报错
- 如果需要新增复制的单元格,只需要在
copyRule数组中按照格式新增对应映射项即可 - 授权过程中出现的安全提示是Google对自定义脚本的常规校验,你自行编写的脚本不会泄露你的表格数据
内容的提问来源于stack exchange,提问作者melwyn mendonca
相关产品推荐
相关产品推荐

