如何让动态下拉菜单仅显示状态为ACTIVE的职位?
问题:动态下拉菜单仅显示ACTIVE状态的职位
我实现了基于谷歌表格的动态下拉菜单,但希望下拉列表只显示G列(对应代码中data[i][5])状态为ACTIVE的职位,添加判断语句后无效,求解决。
尝试代码
for (var i = 0; i < data.length; i+=1) { var status = ${data[i][5]}; if(status == "ACTIVE") { optionsHTML += `<option data-values=" ${data[i][1]}, ${data[i][2]}, ${data[i][3]}, ${data[i][4]}, ${data[i][6]} ">${data[i][0]}</option>`; }else{ } };
完整代码
function getJobList(){ var sheet = SpreadsheetApp.openById("sheetIdHere").getSheetByName("sheetNameHere"); var lastRow = sheet.getLastRow(); var myRange = sheet.getRange("B2:H" + lastRow); var data = myRange.getValues(); var optionsHTML = ""; for (var i = 0; i < data.length; i+=1) { optionsHTML += `<option data-values=" ${data[i][1]}, ${data[i][2]}, ${data[i][3]}, ${data[i][4]}, ${data[i][6]} ">${data[i][0]}</option>`; }; console.log(optionsHTML); return optionsHTML; }
解决方案
问题核心是尝试代码里的变量赋值错误:你误用了模板字符串语法${data[i][5]}直接赋值,这属于语法错误,应该直接通过数组索引获取值。另外需注意单元格空格、大小写匹配的干扰问题,修正后的完整代码如下:
function getJobList(){ var sheet = SpreadsheetApp.openById("sheetIdHere").getSheetByName("sheetNameHere"); var lastRow = sheet.getLastRow(); var myRange = sheet.getRange("B2:H" + lastRow); var data = myRange.getValues(); var optionsHTML = ""; for (var i = 0; i < data.length; i+=1) { var status = data[i][5]; // 修正:直接获取G列状态值,移除错误的模板字符串语法 // 用trim()避免单元格空格干扰,确保判断准确性 if(status.trim() === "ACTIVE") { optionsHTML += `<option data-values="${data[i][1]},${data[i][2]},${data[i][3]},${data[i][4]},${data[i][6]}">${data[i][0]}</option>`; } }; console.log(optionsHTML); return optionsHTML; }
关键修正说明
- 移除错误语法:直接使用
data[i][5]获取G列的状态值,而非模板字符串包裹的写法 - 增加空格处理:通过
trim()去除单元格内容前后的空格,避免因空格导致判断失效 - 可选兼容方案:如果需要忽略大小写匹配,可以将判断条件改为
if(status.trim().toLowerCase() === "active")
内容的提问来源于stack exchange,提问作者codeTester-
相关产品推荐
相关产品推荐

