Google Sheets脚本开发需求:实现选中行复制至下方首个空行
实现选中行复制到当前工作表首个可用空行的脚本按钮
1. 编写Google Apps Script代码
打开你的Google表格,点击「扩展程序」→「Apps脚本」,清空默认代码,粘贴以下脚本:
function copySelectedRowsToFirstEmptyRow() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const selectedRange = sheet.getActiveRange(); const selectedRows = selectedRange.getValues(); const numColumns = selectedRange.getLastColumn(); // 从第一行开始找首个全空的行 let firstEmptyRow = 1; while (firstEmptyRow <= sheet.getLastRow()) { const rowValues = sheet.getRange(firstEmptyRow, 1, 1, numColumns).getValues()[0]; // 检查该行所有单元格是否为空 const isEmpty = rowValues.every(cell => cell === ""); if (isEmpty) break; firstEmptyRow++; } // 如果前面的行都有数据,就把目标行设为最后一行的下一行 if (firstEmptyRow > sheet.getLastRow()) { firstEmptyRow = sheet.getLastRow() + 1; } // 把选中的行复制到目标空行 sheet.getRange(firstEmptyRow, 1, selectedRows.length, numColumns).setValues(selectedRows); }
2. 给工作表添加脚本按钮
- 回到表格界面,点击「插入」→「绘图」,画一个按钮(比如矩形),加上「复制选中行」之类的文字,保存后关闭绘图窗口。
- 点击刚插入的按钮,右上角会出现三个点,选择「分配脚本」。
- 输入函数名
copySelectedRowsToFirstEmptyRow,点「确定」就搞定了。
3. 按需调整逻辑(可选)
如果你的需求是把选中行复制到它下方的首个空行(不是整个工作表的首个空行),可以用下面这个修改版脚本:
function copySelectedRowsToBelowEmptyRow() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const selectedRange = sheet.getActiveRange(); const selectedRows = selectedRange.getValues(); const numColumns = selectedRange.getLastColumn(); const startRow = selectedRange.getLastRow() + 1; // 从选中行的下一行开始找 // 从选中行下方查找首个全空行 let firstEmptyRow = startRow; while (firstEmptyRow <= sheet.getLastRow()) { const rowValues = sheet.getRange(firstEmptyRow, 1, 1, numColumns).getValues()[0]; const isEmpty = rowValues.every(cell => cell === ""); if (isEmpty) break; firstEmptyRow++; } // 复制选中行到目标空行 sheet.getRange(firstEmptyRow, 1, selectedRows.length, numColumns).setValues(selectedRows); }
测试的时候直接选中行点按钮就行,选中单行或多行都能正常复制。
内容的提问来源于stack exchange,提问作者Tom Neal
相关产品推荐
相关产品推荐

