使用indexOf函数无法取值且无法查看Logger日志,请求技术排查
问题分析与解决方案
看起来你遇到了两个核心问题:indexOf 无法匹配到对应值,以及 Logger.log 没有任何输出。咱们一步步拆解解决:
1. indexOf 的用法完全搞反了
你当前写的 xmail.indexOf(xmaillist) 是让字符串 xmail 去搜索数组 xmaillist,这逻辑完全错了!
indexOf 是数组/字符串的内置方法,作用是在当前对象里查找指定元素的位置。正确的写法应该是让数组 xmaillist 调用 indexOf 来查找字符串 xmail,也就是:
var position = xmaillist.indexOf(xmail);
原写法相当于让sachin这个字符串去匹配整个数组,结果必然返回 -1,自然找不到对应值。
2. Logger.log 永远不会执行
你的日志代码写在了 return 语句之后——函数一旦执行到 return 就会立刻终止,这行日志根本没机会运行。必须把它挪到 return 之前的位置。
修正后的完整代码
function getempinfo() { var xmail = 'sachin'; var ss2 = SpreadsheetApp.openById('19zdQSZFX7GTVvkUIDUErfJE7SdfxEw8dhtIkzv7mUOI'); var sheet = ss2.getSheetByName('Employee'); var lastrow = sheet.getLastRow(); // 修正:原getRange会多取一行数据(从第2行开始取lastrow行,会超出实际数据范围) var data = sheet.getRange(2, 1, lastrow - 1, 16).getDisplayValues(); var xmaillist = data.map(function(r) { return r[0]; }); // 修正indexOf调用逻辑 var position = xmaillist.indexOf(xmail); // 把日志挪到return之前,确保能执行 Logger.log('匹配到的位置:' + position); if (position > -1) { return data[position]; } else { return "Record Does not exist"; } }
额外小提示
- 查看日志:在Google Apps Script编辑器中执行函数后,点击顶部菜单栏「查看」→「日志」(或按快捷键
Ctrl+Enter/Cmd+Enter)就能看到输出。 - 关于
getRange:原代码的行参数会导致多取一行数据,因为表头占了第1行,实际数据行数是lastrow - 1,我已经在修正代码里调整了这个参数。
内容的提问来源于stack exchange,提问作者Mask
相关产品推荐
相关产品推荐

