如何修改onEdit脚本实现A5:A1000范围复选框单选功能?
适配A5:A1000范围的单选复选框脚本修改方案
直接替换原脚本即可实现Sheet1中A5:A1000范围内的单选复选框功能——勾选新复选框时,自动取消该范围内其他所有复选框的选中状态:
function onEdit(e) { const targetSheet = "Sheet1"; const targetCol = 1; // A列 const startRow = 5; const endRow = 1000; const activeSheet = e.source.getActiveSheet(); const editedRange = e.range; // 校验编辑操作是否符合触发条件 if (activeSheet.getName() === targetSheet && editedRange.getColumn() === targetCol && editedRange.getRow() >= startRow && editedRange.getRow() <= endRow && editedRange.isChecked()) { // 获取目标范围的所有值,批量构建新状态数组 const fullRange = activeSheet.getRange(startRow, targetCol, endRow - startRow + 1); const values = fullRange.getValues(); const newValues = values.map((row, index) => { const currentRow = startRow + index; return currentRow === editedRange.getRow() ? [true] : [false]; }); // 批量更新范围状态,减少API调用次数提升效率 fullRange.setValues(newValues); } }
核心改动说明
- 不再依赖固定单元格数组,通过列号、行号范围判断编辑单元格是否在目标区域内
- 使用批量读写API(
getValues/setValues)替代逐个单元格操作,大幅提升大范围内的执行效率 - 保留原逻辑的核心:仅在当前单元格被勾选时,才触发其他复选框的取消操作
内容的提问来源于stack exchange,提问作者Kodi
相关产品推荐
相关产品推荐

