Google Sheets宏:编写App Script实现固定单元格区域复制
Google Sheets 固定区域一键复制的App Script实现
可以通过App Script实现固定区域的一键复制,替代手动选中复制的操作,以下是具体方案:
完整脚本代码
function copyFixedRange() { // 定位到「Daily Log」工作表 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Daily Log'); // 获取指定的固定区域AA6:AH8 const targetRange = targetSheet.getRange('AA6:AH8'); // 提取区域内的所有数据 const rangeValues = targetRange.getValues(); // 将二维数组转换为制表符分隔的文本(适配粘贴时的列对齐) const clipboardText = rangeValues.map(row => row.join('\t')).join('\n'); // 通过临时HTML弹窗调用浏览器剪贴板API完成复制 const copyDialog = HtmlService.createHtmlOutput(` <script> navigator.clipboard.writeText('${clipboardText.replace(/'/g, "\\'")}') .then(() => { alert('已成功复制AA6:AH8区域内容到剪贴板!'); google.script.host.close(); }) .catch(error => { alert('复制失败:' + error.message); google.script.host.close(); }); </script> `); SpreadsheetApp.getUi().showModalDialog(copyDialog, '处理中...'); } // 添加自定义菜单(可选,方便快速调用) function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('快捷工具') .addItem('复制固定区域', 'copyFixedRange') .addToUi(); }
脚本说明
- 定位工作表与区域:精准定位到「Daily Log」工作表,直接获取AA6:AH8的固定区域,无需手动滚动选中
- 数据格式转换:把区域的二维数据转换成制表符分隔的文本,确保粘贴到任意位置时列能自动对齐
- 剪贴板写入:借助浏览器原生剪贴板API完成内容复制(服务器端脚本无法直接访问系统剪贴板,因此用临时弹窗实现)
- 自定义菜单(可选):
onOpen函数会在打开工作表时自动添加「快捷工具」菜单,点击即可执行复制操作,无需每次进入脚本编辑器
使用步骤
- 打开你的Google Sheets文件,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 清空编辑器内原有代码,粘贴上述完整脚本
- 点击编辑器顶部的保存按钮,给项目命名(比如「CopyFixedRangeTool」)
- 返回工作表,首次使用需点击「扩展程序」→「快捷工具」→「复制固定区域」,按照提示完成授权(授权仅对你的当前工作表生效,安全可控)
- 授权完成后,再次点击菜单选项即可一键复制目标区域,之后直接粘贴到需要的位置即可
补充说明
- 上述脚本默认复制区域的纯文本值,日常录入场景下已能满足需求;若需要复制格式(如背景色、字体样式),可进一步修改脚本使用
copyTo方法复制到临时区域再处理 - 若复制后粘贴时需要保留格式,可在粘贴时右键选择「粘贴特殊」→「粘贴格式」,结合脚本的纯文本复制使用
内容的提问来源于stack exchange,提问作者Colin Semple
相关产品推荐
相关产品推荐

