Google Sheets宏问题:点击按钮无法逐行记录日期与单元格值
解决Google Sheets宏重复写入首行的问题
你的问题根源在于代码硬指定了A1和B1单元格,所以每次点击都会覆盖第一行数据。要实现每次写入下一行,核心是动态定位History表的下一个空行,具体修改方案如下:
直接替换成这段代码即可:
function Save1() { var spreadsheet = SpreadsheetApp.getActive(); // 定位到目标工作表'History' var historySheet = spreadsheet.getSheetByName('History'); // 计算下一个可写入的行号:已使用的最后一行+1 var nextRow = historySheet.getLastRow() + 1; // 处理日期,清零时分秒 var date = new Date(); date.setHours(0, 0, 0, 0); // 将日期写入History表A列的下一行 historySheet.getRange(nextRow, 1).setValue(date); // 获取'Daily Tracker'表B13的当前值,写入History表B列对应行 var dailyValue = spreadsheet.getSheetByName('Daily Tracker').getRange('B13').getValue(); historySheet.getRange(nextRow, 2).setValue(dailyValue); }
核心改动说明:
- 不再硬编码A1、B1,改用
getLastRow()+1自动获取下一个空行,实现逐行追加 - 直接定位工作表和单元格,去掉了宏录制生成的
activate操作(代码里无需模拟手动选中,直接操作更高效) - 原代码用
setFormula会让B列单元格始终关联Daily Tracker!B13,这里用getValue保存的是点击瞬间的静态值;如果需要保持公式关联,把最后一行改成historySheet.getRange(nextRow, 2).setFormula('=\'Daily Tracker\'!B13')即可
内容的提问来源于stack exchange,提问作者Brach Burton
相关产品推荐
相关产品推荐

