繁体   English   中英

Google Apps 脚本:TypeError:未定义不是 function

[英]Google Apps Script: TypeError: undefined is not a function

我正在尝试运行此演示Google 表格博客演示 我按照所有步骤操作,但在运行https://script.google.com/macros/s/[spreadsheetID]/exec?key=abcdef后出现此错误:

TypeError: undefined is not a function(第 19 行,文件“代码”)

第 19 行 = var headings = rows[0].map(String.toLowerCase); 下面是相关的 function 和完整代码

function doGet(e) {
  if (!isAuthorized(e)) {
    return buildErrorResponse('not authorized');
  }

  var options = {
    page: getPageParam(e),
    category: getCategoryParam(e)
  }

  var spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
  var worksheet = spreadsheet.getSheets()[0];
  var rows = worksheet.getDataRange().sort({column: 2, ascending: false}).getValues();

  var headings = rows[0].map(String.toLowerCase);
  var posts = rows.slice(1);

  var postsWithHeadings = addHeadings(posts, headings);
  var postsPublic = removeDrafts(postsWithHeadings);
  var postsFiltered = filter(postsPublic, options.category);

  var paginated = paginate(postsFiltered, options.page);

  return buildSuccessResponse(paginated.posts, paginated.pages);
}

如何解决这个问题?

当我在 GitHub 看到完整的脚本时,发现该脚本已于 2 年前发布。 在这种情况下,没有添加 V8。 为了避免出现TypeError: undefined is not a function (line 19, file "Code")的错误,下面两种模式怎么样?

模式一:

在此模式中,脚本在没有 V8 运行时的情况下使用。 在这种情况下,请在脚本编辑器中禁用 V8 运行时。 这样, var headings = rows[0].map(String.toLowerCase); 可以使用没有错误。

模式二:

在此模式中,脚本与 V8 运行时一起使用。 在这种情况下,请在脚本编辑器中启用 V8 运行时。 另外,请按如下方式修改脚本。

从:
 var headings = rows[0].map(String.toLowerCase);
至:
 var headings = rows[0].map(Function.prototype.call, String.prototype.toLowerCase);

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM