Excel Script遍历列判断单元格内容时出现类型错误求助
解决Excel Script中
includes方法不存在的类型错误 问题原因
Excel Script返回的单元格值类型是string | number | boolean,只有字符串类型拥有includes方法。当单元格内容是数字或布尔值时,直接调用includes就会触发类型错误。
解决办法
1. 先判断值的字符串类型再调用方法
在执行includes检查前,先用typeof确认当前单元格值是字符串:
if (typeof rangeValues[i][2] === 'string' && rangeValues[i][2].includes('leave')) { // 写入"false negative"的逻辑 }
2. 统一转换为字符串后判断
如果需要兼容非字符串类型的单元格(比如数字格式的内容),可以先把值转为字符串再检查:
if (String(rangeValues[i][2]).includes('leave')) { // 写入"false negative"的逻辑 }
3. 完整修正后的示例代码
function main(workbook: ExcelScript.Workbook) { const sheet = workbook.getActiveWorksheet(); const usedRange = sheet.getUsedRange(); const rangeValues = usedRange.getValues(); for (let i = 0; i < rangeValues.length; i++) { // 先判断类型,同时忽略大小写匹配"leave" if (typeof rangeValues[i][2] === 'string' && rangeValues[i][2].toLowerCase().includes('leave')) { // 向右偏移8列(原列索引2 + 8 = 10) sheet.getCell(i, 10).setValue("false negative"); } } }
额外提示
添加.toLowerCase()可以让匹配不区分大小写,避免因为单元格内容是"Leave"或"LEAVE"导致漏判,根据你的需求可以选择保留或移除。
内容的提问来源于stack exchange,提问作者JT Emnett
相关产品推荐
相关产品推荐

