Google App Script 校验另一工作表值存在且相邻单元格非空后弹窗实现问题
表单校验逻辑修改实现
你需要的核心调整是在筛选匹配行时,额外判断目标值对应的相邻单元格是否为空,这里默认相邻单元格为目标值所在位置的右侧相邻单元格,如果是左侧相邻只需修改代码中列索引的偏移量即可,修改后的完整代码如下:
var valueToSearch2 = formS.getRange("B5").getValue(); var logSValues = logS.getDataRange().getValues(); // 筛选同时满足两个条件的行:包含目标值、且目标值对应的右侧相邻单元格不为空 if(logSValues.filter(row => { const targetIndex = row.indexOf(valueToSearch2); // 确认目标值存在且相邻列未超出当前行的列范围、且值不为空 return targetIndex > -1 && targetIndex < row.length -1 && row[targetIndex + 1] !== ""; }).length > 0) { SpreadsheetApp.getUi().alert("Stop Processing"); return; }
调整说明
- 原有逻辑仅判断行是否包含目标值,新增了
indexOf定位目标值在当前行的具体列位置 - 新增相邻单元格非空判断逻辑,同时添加了列索引边界校验,避免因目标值在最后一列导致的索引越界报错
- 如果你要判断的是目标值左侧的相邻单元格,把
row[targetIndex + 1]改成row[targetIndex - 1],同时把边界判断条件targetIndex < row.length -1改成targetIndex > 0即可
内容的提问来源于stack exchange,提问作者test tester
相关产品推荐
相关产品推荐

