0

更新:好的,这是一个简单的修复。我选择了我正在输入的数字列,然后转到格式->数字->纯文本,突然我的功能起作用了!如果我将其更改为 Format -> Number -> Normal 或其他任何内容,则会引发错误。


如果字符串的开头小于 9,我有一个方法可以将零添加到字符串的开头。我收到一个错误,指出函数search未定义,如issn.search第 4 行所示。什么可能导致此问题?具体来说,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;
}
4

1 回答 1

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;
}
于 2012-12-13T22:44:56.440 回答