如何调整Google脚本让目标工作表自动匹配目标表格的活动工作表
修改Google脚本以适配目标表格的活动工作表
要让脚本自动将数据复制到目标表格的活动工作表,只需对原代码做两处关键调整:
- 移除不再需要的
targetSheetName变量定义 - 将通过工作表名称获取目标表的逻辑,替换为获取目标表格的活动工作表
修改后的完整代码如下:
function copySelectedRows() { var sourceSpreadsheetId = "SOURCE_SPREADSHEET_ID"; var targetSpreadsheetId = "TARGET_SPREADSHEET_ID"; var sourceSheetName = "SourceSheetName"; var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId); var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName); var targetSpreadsheet = SpreadsheetApp.openById(targetSpreadsheetId); var targetSheet = targetSpreadsheet.getActiveSheet(); // 核心修改:自动获取目标表格的活动工作表 var selection = sourceSheet.getSelection(); var selectedRanges = selection.getActiveRangeList().getRanges(); var targetData = []; selectedRanges.forEach(function (range) { var startRow = range.getRow(); var numRows = range.getNumRows(); var sourceRange = sourceSheet.getRange(startRow, 2, numRows, 4); // 从B列(index2)开始,取4列数据 var sourceValues = sourceRange.getValues(); sourceValues.forEach(function (row) { targetData.push([row[0], "", "", row[1], row[2], row[3]]); // 按原需求映射列数据 }); }); if (targetData.length === 0) return; // 新增判断:无选中数据时直接退出,避免报错 var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1, targetData.length, targetData[0].length); targetRange.setValues(targetData); }
关键说明:
targetSpreadsheet.getActiveSheet()会自动识别目标表格中当前用户正在查看/选中的工作表,无需手动指定名称- 新增的空数据判断可以避免因未选中任何行导致的脚本错误
- 原脚本的列映射逻辑保持不变,如需调整数据对应关系,修改
targetData.push([...])内的数组顺序即可
内容的提问来源于stack exchange,提问作者JP0710
相关产品推荐
相关产品推荐

