编写Google Apps Script实现每次运行时将指定单元格值追加至新行
解决Google Sheets脚本提取数据并逐行追加的问题
需求说明
从「IN-HOUSE CHELSEA WORKSHOP」工作表的S1单元格提取数据,每次运行脚本(或触发器触发)时,将数据追加到「Sheet8」的A列新行,按运行次数生成值列表。
现有脚本分析
你提供的脚本逻辑方向正确,但存在一处冗余写法:sheet2.getRange(1,1).getLastRow() 无需先指定单元格范围,直接调用工作表的getLastRow()方法即可高效获取最后一行位置。
优化后的脚本
function chelsearepairlog2(){ const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet1 = ss.getSheetByName("IN-HOUSE CHELSEA WORKSHOP"); const sheet2 = ss.getSheetByName("Sheet8"); // 获取S1单元格的当前值 const currentrepairs = sheet1.getRange("S1").getValue(); // 获取Sheet8中A列的最后一行行号 const lastRow = sheet2.getLastRow(); // 将值追加到A列的下一行 sheet2.getRange(lastRow + 1, 1).setValue(currentrepairs); }
补充说明
- 若S1单元格是公式计算结果,
getValue()会直接提取最终计算值,完全满足需求 - 触发器配置:可在Google Sheets的「扩展程序」→「Apps脚本」→「触发器」中添加时间驱动触发器(如定时运行)或事件触发触发器(如打开工作表时运行),实现自动追加
- 若后续需要批量提取多行数据,可将
getRange("S1")改为getRange("S1:S[行数]"),并用getValues()批量读取后,通过setValues()一次性写入,提升脚本效率
内容的提问来源于stack exchange,提问作者FPWM123
相关产品推荐
相关产品推荐

