【问题标题】:Cannot call method "indexOf" of undefined - Google App Script无法调用未定义的方法“indexOf” - Google App Script
【发布时间】:2019-09-03 16:05:45
【问题描述】:

我一周前开始使用 Javascript,但我陷入了困境和绝望。我有这个非常简单的代码(理想情况下,当我调用它时它会这样做:=findAudience(A1) -> 如果在单元格 A1 中,您找到了一个受众名称,请在单元格中返回它)(在 ' 中找到受众名称列表Dimension' 选项卡 row1、column1) 的列表

我的代码如下:

function findAudience(adSet){   
    var ss = SpreadsheetApp.getActive();    
    var listSheet = ss.getSheetByName("List of Dimensions");   
    var list = listSheet.getRange(1, 1, listSheet.getLastRow().getValues();    
    var adsetsAudiences = "" ;   

    for(j = 0; j < list.length; j++){

        if(adSet.indexOf(list[j][0]) > -1 && list[j][0] != ""){

            if(adsetsAudiences != ""){
                adsetsAudiences = adsetsAudiences+", "+list[j][0]

            }else{
                adsetsAudiences = list[j][0]
            }
        }
    }

    return adsetsAudiences;
};

我得到的错误是:

TypeError:无法调用未定义的方法“indexOf”。 (第 10 行,文件“findAudience”)

希望这对你比对我更有意义......

提前感谢您的浏览,

【问题讨论】:

  • 你是如何调用你的findAudience()函数的?您是否传递了预期的参数adSet?当 JavaScript 谈到 "undefined" 时,它意味着某些东西有一个意想不到的价值,或者没有真正的价值。
  • if(adSet.indexOf(list[j][0])..之前显示console.log(adset)的输出
  • 在我的 Gsheet 中,我将编写 =findAudience(adset) adsets are found in column A.
  • 没有输出...当我记录它时:“没有找到日志。使用 Logger API 将日志添加到您的项目。”
  • A1 中有什么? indexOf 应该在数组上调用。 A1 是一个字符串,您不能直接从脚本编辑器运行该函数。从工作表中调用它

标签: javascript google-apps-script google-sheets custom-function


【解决方案1】:

你传入函数的参数adSet没有定义。

你可以通过在函数的早期检查参数来防止这个错误:

function findAudience(adSet){
    if(adset === null) return false; // however you want to handle that
    // ...
}

【讨论】:

    猜你喜欢
    • 2012-01-20
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多