使用Google Apps Script在Google Sheets指定列起始单元格向下添加数据
解决方案
问题出在你每次都固定写入B44单元格,自然会覆盖原有内容;而appendRow是从表格最后一行追加,没法指定从B44开始。要实现从B44开始依次往下填,核心是找到B列从B44开始的第一个空单元格,然后把姓名写入那里。
修改你的code.gs里的AddRecord函数即可,下面是调整后的完整代码:
function addminitask() { var html = HtmlService.createTemplateFromFile('minitask').evaluate() SpreadsheetApp.getUi().showModalDialog(html, ' '); SpreadsheetApp.getActive().toast(result); } function AddRecord(name) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var mainSheet = ss.getSheetByName("DAILY HUB"); // 从B44开始,向下查找第一个空单元格 var startCell = mainSheet.getRange("B44"); // 如果B44本身是空的,直接用它 if (startCell.getValue() === "") { startCell.setValue(name); return; } // 否则找到当前已填充区域的最后一行,下一行就是空行 var lastFilledCell = startCell.getNextDataCell(SpreadsheetApp.Direction.DOWN); var targetRow = lastFilledCell.getRow() + 1; mainSheet.getRange(targetRow, 2).setValue(name); } function startForm() { var form = HtmlService.createHtmlOutputFromFile('minitask'); SpreadsheetApp.getUi().showModalDialog(form, 'Add Record'); } function onOpen(e) { addMenu(); }
关键逻辑说明:
- 先检查B44是否为空,为空就直接写入
- 如果B44已有内容,用
getNextDataCell方法向下找到最后一个有内容的单元格,然后在它的下一行写入新姓名 getRange(targetRow, 2)里的2代表第2列(也就是B列),这样比写'Bxx'更灵活
你的minitask.html代码不需要修改,保持原样即可。
内容的提问来源于stack exchange,提问作者user6738171
相关产品推荐
相关产品推荐

