Apps Script:if语句双条件实现——单元格变更且含指定文本
修正后的Google Sheets onEdit函数实现需求
需求说明
- 当A4单元格被修改且内容不含文本“SS”时,D4单元格显示“please select”
- 当A4单元格被修改且内容包含文本“SS”时,D4单元格显示B4的值,并设置黄色背景、红色字体
原代码存在的问题
- 将判断单元格位置的布尔值错误当作单元格内容进行字符串匹配
- 字符串匹配语法错误,未使用正确的包含判断方法
- 错误用布尔变量获取B4单元格的值
- 单元格引用方式无效(
getRange("Size")不是合法引用) - 代码结构混乱,条件判断层级错误
修正后的代码
function onEdit(e) { try { const range = e.range; const sheet = range.getSheet(); // 仅处理"mycalc"工作表的A4单元格编辑事件 if (sheet.getName() !== "mycalc" || range.getRow() !== 4 || range.getColumn() !== 1) { return; } const a4Value = range.getValue().toString(); const d4Range = sheet.getRange(4, 4); if (a4Value.includes("SS")) { // 包含SS时,写入B4值并设置样式 const b4Value = sheet.getRange(4, 2).getValue(); d4Range.setValue(b4Value); d4Range.setBackground("#ffff00") .setFontColor("#ff0000"); } else { // 不包含SS时,显示指定文本 d4Range.setValue("please select"); // 可选:重置样式恢复默认 d4Range.setBackground(null) .setFontColor(null); } // 若需要保留原代码中C4的设置,可取消下方注释 // sheet.getRange(4, 3).setValue("Please Select"); } catch(err) { SpreadsheetApp.getActiveSpreadsheet().toast("onEdit() 错误:" + err); } }
代码说明
- 范围校验:先确认编辑的是目标工作表的A4单元格,不符合则直接退出,减少无效执行
- 内容判断:用
includes()方法准确判断A4内容是否包含“SS” - D4逻辑处理:
- 包含“SS”时,读取B4值写入D4,同时设置黄色背景、红色字体
- 不包含“SS”时,写入指定提示文本,可选重置样式恢复默认状态
- 错误捕获:保留异常捕获逻辑,用弹窗提示错误信息
内容的提问来源于stack exchange,提问作者Leo300
相关产品推荐
相关产品推荐

