Google Sheets勾选CheckBox时复制单元格内容到其他位置的实现方法
Google Sheets勾选复选框后复制内容的实现方案
原有代码问题排查
你原有单选逻辑已经生效,问题出在勾选后的赋值逻辑:你错误将选中行号写入了D4:D6的复选框区域,没有实现目标内容复制的效果,只需调整勾选触发后的逻辑即可。
修改后完整代码
function onEdit(event) { // 保留原有单选复选框逻辑 try { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = event.range.getSheet(); if( sheet.getName() === 'Sheet1' ) { if( event.range.getColumn() === 4 ) { var range = sheet.getRange(4,4,3,1); var checks = range.getValues(); var valid = range.getDataValidations(); for( var i=0; i<checks.length; i++ ) { if( valid[i][0].getCriteriaType() === SpreadsheetApp.DataValidationCriteria.CHECKBOX ) checks[i][0] = false; } range.setValues(checks); event.range.setValue(event.value); // 新增内容复制逻辑 if( event.value === "TRUE" ) { // 可自定义:要复制的源列序号,A=1,B=2,C=3以此类推 const sourceCol = 2; // 可自定义:复制后内容写入的目标单元格 const targetCell = sheet.getRange("F2"); // 读取勾选行对应列的内容,写入目标单元格 const selectedRow = event.range.getRow(); const copyContent = sheet.getRange(selectedRow, sourceCol).getValue(); targetCell.setValue(copyContent); } } } } catch(err) { SpreadsheetApp.getUi().alert(err); } }
参数调整说明
- 如需复制其他列内容,修改
sourceCol的数值对应目标列序号即可 - 如需修改内容写入位置,修改
targetCell的单元格地址即可 - 如需复制多列内容,新增多组读取、赋值的逻辑即可
内容的提问来源于stack exchange,提问作者Eaimy Khaing
相关产品推荐
相关产品推荐

