【问题标题】:Google apps script UrlFetchApp error "Access not granted or expired"Google 应用程序脚本 UrlFetchApp 错误“访问未授予或已过期”
【发布时间】:2018-07-24 10:58:02
【问题描述】:

我创建了一个服务帐户来访问域用户在谷歌驱动器中的文件以更改共享设置。

这是应用脚本代码:

`  if(service.hasAccess){

        var fileId = activity.events[0].parameters[6].value;
        var url = 'https://www.googleapis.com/drive/v2/files/'+fileId+'/permissions'
        var body = {
          'value': 'domain.com',
          'type': 'domain.com',
          'role': 'writer'
        };
                Logger.log("done");
         var response = UrlFetchApp.fetch(url, {
          method: 'POST',
          resource: body,
          headers: {
            Authorization: 'Bearer ' + service.getAccessToken()
          }
        });`

我可以在日志对话框中看到“完成”文本。所以我认为该服务可以访问用户驱动器。但仍然引发同样的错误。我在这里错过了什么吗?任何帮助将不胜感激,谢谢。

【问题讨论】:

  • 您的Logger.log("done") 语句是BEFORE URL Fetch,所以无论如何它都会记录下来。
  • 您可以通过内置的Drive Service 执行大多数云端硬盘文件共享操作,而无需使用 Google Drive API。
  • @Diego 但我正在访问其他用户的谷歌驱动器文件。所以我想我应该使用服务帐户。

标签: javascript google-apps-script google-drive-api google-app-maker


【解决方案1】:

据我所知,App Maker 为您提供了无需直接调用即可连接 API 的机会。您可以打开设置页面,滚动到底部并添加高级服务Drive API

然后您就可以使用 Apps Script Drive 服务:https://developers.google.com/apps-script/reference/drive/

有关将 Drive API 连接到 App Maker 的详细信息,您可以在此处找到:

https://developers.google.com/apps-script/advanced/drive

【讨论】:

  • 这个方法我已经试过了。但它引发了“拒绝访问”错误。我一直在尝试解决这个问题 3 天,但没有成功。
  • 您是否在 Google Cloud 平台上启用了此 API? developers.google.com/apps-script/guides/services/…
  • 您注意到后,我在 Google Cloud Platform 上启用了 API。但我仍然有同样的错误......
猜你喜欢
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 2020-10-20
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多