更新:好的,这是一个简单的修复。我选择了我输入的数字列,然后转到格式 - >数字 - >纯文本,突然间我的功能奏效了!如果我将其更改为格式 - >数字 - >正常或其他任何东西,都会引发错误。
我有一个方法,如果字符串小于9,就会在字符串的开头添加零。我收到错误,函数search
未定义,如第4行的issn.search
。什么可能导致这个问题?具体而言,Google Apps脚本中的错误为TypeError: Cannot call method "search" of undefined. (line 5)
function fixissn(issn){
//Logger.log("Old issn is " + issn);
//if there's a dash in the ISSN, it need 9 characters instead of 8
if (issn.search("-") > -1) {
var mis = 9;
} else if (issn.search("-") == -1) {
var mis = 8;
}
//if the ISSN is less than 9 or 8 (mis), add zeros to the beginning
while (issn.length < mis && issn.length > 0) {
//zero added to beginning of ISSN
issn = 0 + issn
}
//Logger.log("fixed to new issn " + issn);
return issn;
}
答案 0 :(得分:0)
为了回应@epascarello所说的内容,看起来似乎没有传入一个值。很难说这可能是因为你在一系列单元格上使用了这个函数,其中一些是空的。要绕过该问题,您可以尝试以下方法:
function fixissn(issn){
if (issn !== undefined) {
//Logger.log("Old issn is " + issn);
//if there's a dash in the ISSN, it need 9 characters instead of 8
if (issn.search("-") > -1) {
var mis = 9;
} else if (issn.search("-") == -1) {
var mis = 8;
}
//if the ISSN is less than 9 or 8 (mis), add zeros to the beginning
while (issn.length < mis && issn.length > 0) {
//zero added to beginning of ISSN
issn = 0 + issn
}
//Logger.log("fixed to new issn " + issn);
}
return issn;
}