如何在Google Apps Script复制数据后为每行添加日期与固定文本?
问题:为复制到Log工作表的批量数据补充日期与固定文本列
完全不需要重新编写代码,直接把补充A、B列的逻辑整合到现有函数里即可。以下是修改后的完整代码,同时优化了行数不固定的适配问题:
function copyInfo() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var copySheet = ss.getSheetByName("Review"); var pasteSheet = ss.getSheetByName("Log"); // 获取源数据范围(改为动态获取有效行数,适配行数不固定的场景) var sourceRange = copySheet.getRange(3, 2, copySheet.getLastRow() - 2, 5); var sourceValues = sourceRange.getValues(); var rowCount = sourceValues.length; if (rowCount === 0) return; // 如果没有数据,直接退出 var targetStartRow = pasteSheet.getLastRow() + 1; // 1. 复制源数据到C列及以后 var targetDataRange = pasteSheet.getRange(targetStartRow, 3, rowCount, 5); targetDataRange.setValues(sourceValues); // 2. 批量填充A列当日日期 var today = new Date(); var dateArray = Array(rowCount).fill([today]); pasteSheet.getRange(targetStartRow, 1, rowCount, 1).setValues(dateArray); // 3. 批量填充B列固定文本"Review" var reviewArray = Array(rowCount).fill(["Review"]); pasteSheet.getRange(targetStartRow, 2, rowCount, 1).setValues(reviewArray); }
关键修改说明:
- 动态适配行数:把原来固定的
15行改为copySheet.getLastRow() - 2(因为源数据从第3行开始),自动识别工作表中实际有数据的行数,解决你提到的「行数不固定」问题。 - 批量填充列数据:用
Array.fill()创建对应行数的数组,一次性写入A、B列,比逐行写入更高效。 - 空数据判断:如果源工作表没有可复制的数据,函数会直接退出,避免无效操作。
内容的提问来源于stack exchange,提问作者JottaKz
相关产品推荐
相关产品推荐

