Google Spreadsheet Appscript:如何复制整行数据并添加时间戳?
解决多用户在线状态批量记录问题
问题根源
你的代码只复制第一个用户数据,是因为sourceCell.getValue()仅返回选中范围的第一个单元格值,而非整行数据;同时原范围定义(3,2,2,40)是取第3、4两行的40列,不符合你只取第3行的需求。
修改后的代码
function logDataA2() { const ss = SpreadsheetApp.getActive(); const sourceSheet = ss.getSheets()[0]; // 定位第3行B列开始的40列数据(仅1行) const sourceRange = sourceSheet.getRange(3, 2, 1, 40); // 获取整行数据并转为一维数组 const rowData = sourceRange.getValues()[0]; const targetSheet = ss.getSheetByName('Sheet1'); // 拼接时间戳与整行数据,追加到目标表 targetSheet.appendRow([new Date(), ...rowData]); }
关键改动说明
- 将
getValue()替换为getValues():后者返回整个范围的二维数组,通过[0]提取单行的一维数据 - 调整范围参数为
(3, 2, 1, 40):参数顺序是(起始行, 起始列, 行数, 列数),确保只选取第3行的40列数据 - 使用扩展运算符
...rowData:将单行数据数组展开,与时间戳组合成完整的一行数据,一次性写入目标表
内容的提问来源于stack exchange,提问作者TimM
相关产品推荐
相关产品推荐

