Google Sheets脚本:如何在指定范围追加行并保留A列复选框?
修改方案及代码
function criarRegistro() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("EQUIPAMENTOS NO LABORATÓRIO"); // 获取C2:G2的数据源并转为一维数组 var sourceRange = sheet.getRange("C2:G2"); var values = sourceRange.getValues()[0]; // 计算下一个待写入的空白行 var nextRow = sheet.getLastRow() + 1; // 在A列对应行插入未勾选的复选框 var checkboxCell = sheet.getRange(nextRow, 1); checkboxCell.insertCheckboxes().setValue(false); // 将数据从B列开始写入目标行(覆盖B到F列,对应原C2:G2的5列数据) var targetRange = sheet.getRange(nextRow, 2, 1, values.length); targetRange.setValues([values]); // 可选:取消注释可清空C2:G2的输入内容 // sourceRange.clearContent(); ss.toast("Registro finalizado"); SpreadsheetApp.flush(); }
关键修改说明
- 去掉重复的工作表变量:原代码中
sheet和destinyLog指向同一张表,直接合并简化逻辑 - 替换
appendRow:原方法会从A列开始写入,改为先定位下一行,再从B列精准写入数据 - 单独处理复选框:通过
insertCheckboxes()在A列目标行插入控件,并强制设置为未勾选状态,避免复选框被误识别为普通数据 - 保留原功能选项:清空输入区域的代码以注释形式保留,可按需启用
内容的提问来源于stack exchange,提问作者DimitryART
相关产品推荐
相关产品推荐

