search()方法无法在Google脚本中使用

时间:2012-12-13 17:21:49

标签: javascript google-apps-script

更新:好的,这是一个简单的修复。我选择了我输入的数字列,然后转到格式 - >数字 - >纯文本,突然间我的功能奏效了!如果我将其更改为格式 - >数字 - >正常或其他任何东西,都会引发错误。


我有一个方法,如果字符串小于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;
}

1 个答案:

答案 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;
}