0

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

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

但是,当使用节点在本地运行脚本时,出现此错误:

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));

4

2 回答 2

4

看来我没有要求正确的范围。nodejs 示例 include 'https://www.googleapis.com/auth/drive',但我还需要包含'https://www.googleapis.com/auth/spreadsheets'SCOPES数组中。似乎错误消息ScriptError在这里的信息量不是很大。

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

于 2016-03-01T22:17:39.797 回答
0

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

Apps 脚本中的基本类型类似于 JavaScript 中的基本类型:字符串、数组、对象、数字和布尔值。Execution API 只能获取和返回与这些基本类型相对应的值——API 无法传递更复杂的 Apps 脚本对象(如 Document 或 Sheet)。

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

在您的帐户“班级”中

this.report = spreadsheet.getSheetByName(data.reportSheet);

旧答案:

在这种情况下,“data.business_exp”将为空。您需要从某处加载数据。每次调用脚本时,都会创建一个新的脚本实例。在执行链结束时,它将被销毁。作为全局对象存储的任何数据都将丢失。您需要将该数据保存到永久位置,例如脚本/用户属性,并在每次脚本执行时重新加载。

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

于 2016-02-29T20:19:36.707 回答