You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets内嵌Google Apps Script调用API时JSON解析失败及V8运行时异常问题

解决Google Apps Script调用Neutrino手机号API的解析问题

我来帮你一步步搞定这两个报错问题:

1. 非V8运行时的JSON.parse报错

你碰到的TypeError: Cannot find function parse in object [object Object],在旧版Rhino引擎(非V8)里,偶尔会出现全局JSON对象被意外覆盖或者作用域异常的情况。虽然你确认返回的是标准JSON,但我们可以换个更稳妥的方式解析响应:

要么直接用UrlFetchApp的响应解析能力,要么手动确保调用的是全局的JSON对象。另外,先把响应文本转成字符串再解析,也能避免潜在的类型问题。

修正后的非V8兼容代码:

function neutrinoapilookup() { 
  var lookupUrl = "https://neutrinoapi.net/phone-validate?user-id=123456789justtesting123@gmail.com&api-key=k00h86sr9ayZgcs2x77Zd5FUCHLlkF86hN23mAHQOG4R4Pq2&number=1567687436";
  var response = UrlFetchApp.fetch(lookupUrl, {'muteHttpExceptions': true});
  // 确保拿到纯文本并明确调用全局JSON.parse
  var jsonText = String(response.getContentText());
  var data = window.JSON ? window.JSON.parse(jsonText) : eval('(' + jsonText + ')');
  console.log(data.valid); 
}

注意:eval方式只在你完全信任API返回内容的情况下用,避免注入风险。

2. V8运行时的SyntaxError: Unexpected token 'class'

这个报错大概率不是来自你提供的这段代码,而是你的Google Apps Script项目里其他脚本文件有语法问题。V8引擎对ES6+语法要求更严格,常见原因包括:

  • 旧脚本里把class当成变量名用了(V8里class是保留字,不能当变量)
  • 其他脚本有不符合ES6规范的写法(比如未闭合的函数、非法变量名)
  • 脚本里藏了特殊字符(比如全角空格、不可见字符)

解决步骤:

  • 检查项目里所有脚本文件,找有没有用class当变量名的地方,赶紧重命名
  • 逐段排查其他脚本的语法,比如看看函数有没有闭合、变量声明合不合法
  • 把这段测试代码单独放到新的脚本文件里运行,排除其他脚本的干扰

另外,推荐在V8环境下用更简洁的写法,而且别把敏感信息(API密钥、用户ID)硬编码,存到脚本属性里更安全:

function neutrinoapilookup() { 
  // 从脚本属性获取敏感信息(推荐做法)
  var props = PropertiesService.getScriptProperties();
  var userId = props.getProperty('NEUTRINO_USER_ID');
  var apiKey = props.getProperty('NEUTRINO_API_KEY');
  
  var lookupUrl = `https://neutrinoapi.net/phone-validate?user-id=${encodeURIComponent(userId)}&api-key=${encodeURIComponent(apiKey)}&number=1567687436`;
  var response = UrlFetchApp.fetch(lookupUrl, {'muteHttpExceptions': true});
  var data = JSON.parse(response.getContentText());
  console.log(data.valid); 
}

设置脚本属性的方法:点击编辑器菜单「项目设置」→ 勾选「显示"脚本属性"」→ 添加对应的键值对。

总结

  • 非V8环境:通过明确调用全局JSON.parse或替代方式解决解析问题
  • V8环境:排查项目中其他脚本的语法冲突,尤其是保留字class的误用

内容的提问来源于stack exchange,提问作者user13708028

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:27:48