使用Google Apps脚本执行API的ScriptError

时间:2016-02-29 15:51:19

标签: node.js google-apps-script execution-api

按照这些指南https://developers.google.com/apps-script/guides/rest/quickstart/target-scripthttps://developers.google.com/apps-script/guides/rest/quickstart/nodejs,我尝试在节点中使用Execution API来返回Google电子表格中的一些数据。

我已将脚本ID设置为Apps脚本文件的Project Key。我还验证了在脚本编辑器中运行该函数是否成功。

但是,当使用节点本地运行脚本时,我收到此错误:

The API returned an error: Error: ScriptError

我还确保该脚本与我用于使用Google API进行身份验证的项目相关联。

有没有人对我可以做些什么来调试/解决这个问题?错误是如此通用,我不知道在哪里看。

更新:我已经在此JSBin中包含了代码的副本(year函数是入口点) https://jsbin.com/zanefitasi/edit?js

更新2:错误似乎是由于包含此行而引起的 var spreadsheet = SpreadsheetApp.open(DriveApp.getFileById(docID));

2 个答案:

答案 0 :(得分:4)

似乎我没有要求合适的范围。 nodejs示例包括'https://www.googleapis.com/auth/drive',但我还需要在'https://www.googleapis.com/auth/spreadsheets'数组中包含SCOPES。似乎错误消息ScriptError在这里没有很多信息。

为了找到您需要的范围,请转到脚本编辑器>文件>项目属性>作用域。请记住删除旧凭据~/.credentials/old-credential.json,以便脚本请求新凭据。

答案 1 :(得分:0)

编辑:随着信息的更新,我仔细看了一下,发现你正在返回一个非基本类型。具体来说,您将返回工作表对象。

  

Apps脚本中的基本类型与基本类型相似   JavaScript:字符串,数组,对象,数字和布尔值。该   执行API只能获取和返回与这些相对应的值   基本类型 - 更复杂的Apps脚本对象(如文档或   Sheet)不能通过API传递。

https://developers.google.com/apps-script/guides/rest/api

在您的帐户“班级”中

page2

老答案:

在此上下文中,'data.business_exp'将为null。您需要从某处加载数据。每次调用脚本时,都会创建脚本的新实例。在执行链的末尾它将被销毁。存储为全局对象的任何数据都将丢失。您需要将该数据保存到永久位置(例如脚本/用户属性),并在每次脚本执行时重新加载。

https://developers.google.com/apps-script/reference/properties/