JS调用Google Sheets API报gapi is not defined错误怎么解决
问题产生原因
- 你引入的Google API脚本添加了
async defer属性,会异步加载不阻塞页面解析,你在内联脚本末尾直接同步调用listMajors()时,api.js还未加载完成,全局gapi对象尚未被初始化,因此触发未定义错误。 - 即便
gapi加载完成,也需要先完成客户端初始化、用户授权流程后,才能调用Sheets API接口,提前调用本身逻辑也不成立。
修复方法
- 首先删除内联脚本末尾你额外添加的独立
listMajors()调用,原有代码逻辑中已经在updateSigninStatus函数里判断用户登录完成后自动触发listMajors执行,不需要手动额外调用。 - 确认你已经在Google Cloud控制台正确配置了OAuth客户端ID的授权重定向域名,同时填入正确的
API_KEY、CLIENT_ID和目标表格的spreadsheetId即可正常运行。 - 附加优化:你当前的取值范围是
Class Data!A1:A1仅获取A1单元格,原有示例代码中的循环打印row[0] + ', ' + row[4]逻辑可以简化为直接取range.values[0][0]输出,避免索引越界问题。
内容的提问来源于stack exchange,提问作者Weatherby Syriux
相关产品推荐
相关产品推荐

