Java 执行API谷歌应用程序脚本权限

Java 执行API谷歌应用程序脚本权限,java,gradle,google-apps-script,Java,Gradle,Google Apps Script,每当编辑电子表格时,我都希望通知我的单独Java代码。 Google Apps脚本具有简单的触发器: 我尝试了onEdit的触发器,并通过让我的电子表格在编辑时收到一封电子邮件来测试它。 这起作用了。 现在,我想将脚本连接到我的Java代码: 我使用示例appscript完成了快速启动,它成功了。java文件打印出了GoogleDrive根文件夹的内容。 当我尝试对我的onEdit脚本应用相同的步骤时,我在终端中收到一个“权限拒绝”错误 我想知道这是否是因为简单触发器绑定到电子表格,而执行API

每当编辑电子表格时,我都希望通知我的单独Java代码。 Google Apps脚本具有简单的触发器:

我尝试了onEdit的触发器,并通过让我的电子表格在编辑时收到一封电子邮件来测试它。 这起作用了。 现在,我想将脚本连接到我的Java代码:

我使用示例appscript完成了快速启动,它成功了。java文件打印出了GoogleDrive根文件夹的内容。 当我尝试对我的onEdit脚本应用相同的步骤时,我在终端中收到一个“权限拒绝”错误

我想知道这是否是因为简单触发器绑定到电子表格,而执行API用于无限脚本

如何将onEdit函数连接到Java代码

以下是我的错误消息:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "The caller does not have permission",
    "reason" : "forbidden"
  } ],
  "message" : "The caller does not have permission",
  "status" : "PERMISSION_DENIED"
}
        at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)
        at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
        at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1065)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
        at Quickstart.main(Quickstart.java:179)

我不知道您是如何将相同的步骤应用于onedit的。在编辑时,触发器仅触发应用程序脚本代码,而不是计算机上的代码。您必须使用java脚本轮询更改,以确定是否进行了任何编辑。同样,您可以在google应用程序脚本中重写代码,使其在编辑时被触发。@JackBrown我认为这里的指南:将您的应用程序脚本代码连接到我的java代码。是的,onedit可以处理应用程序脚本代码。但是我认为您可以将其连接到java代码,这样我就不必每天轮询一次。基于此,尝试添加
SheetsScopes.DRIVE
authorize()
中给出的作用域。您还可以创建一个新目录,它将验证凭据并将其保存到新创建的目录中。下面是另一个可能有用的参考:执行api不会从应用程序脚本调用java代码,而是从java代码调用应用程序脚本。您需要一些在java应用程序中公开的接口,如HTTP或pub/sub。至于您403,请确保您使用的OAuth凭据来自您试图调用的项目。确保您的作用域匹配,查看文件->项目属性->作用域以获得所需的特定作用域。@SpenceEaston java代码是否可以调用应用程序脚本并返回一个值,指示该电子表格已被编辑/更改?