【发布时间】:2019-10-02 12:24:14
【问题描述】:
我想通过 API 请求从 Google Cloud 获取数据,基本上是电子表格。
我并不是真正的编码员,只是一个试图自动化一切的分析师。抱歉,如果这是一个愚蠢的问题,或者一开始就不是最好的主意。无论如何,这就是问题所在。
我使用https://developers.google.com/oauthplayground/ 看看我能从谷歌云文件中得到什么,因为我只是只读访问那里的文件。我想以某种方式获得自动报告的 Google Play 数据。
我使用“https://www.googleapis.com/auth/devstorage.read_only”范围授权 API,然后通过“用于令牌的交换授权代码”,然后我可以查看元数据和文件本身:
这给了我元数据:
https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_0000000000000000/o/reviews%2Freviews_com.appid_201909.csv
添加“?generation=1569963312859248&alt=media”会显示 csv 的内容。
我想让它自动将数据传输到某个似乎最简单的电子表格中。所以我在 Google App 脚本中编写了一些代码。代码如下。我也在清单文件中添加了范围。
var token = ScriptApp.getOAuthToken();
var options = {};
options.headers = {"Authorization": "Bearer "+token};
var links = UrlFetchApp.fetch("https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_0000000000000000/o/reviews%2Freviews_com.appid_201909.csv?generation=1569963312859248&alt=media" , options);
var data = links.getBlob().getDataAsString('utf-16le');
奇怪的是我完全可以获取元数据,但是当我尝试获取数据本身时出现错误
“https://www.googleapis.com 的请求失败,返回代码 403。 截断的服务器响应:“找不到项目 10000000000000 并且 不能用于 API 调用。如果是最近创建的,请启用 Cloud 存储 JSON API 通过访问https://c..."
但是我怎样才能通过我的 API 调用查看元数据呢?
我测试的另一件事-我从操场上获取了访问令牌,而不是函数,然后一切正常。但我真的想让这个自动化。是关于范围的吗?但我不知道是什么。
【问题讨论】:
-
你是否启用了错误信息中写的api?
-
好吧,我不能,因为我没有那种级别的数据访问权限。但是为什么它对某些 API 请求有效,但当我尝试使用应用脚本时却无效?
-
你在说什么数据? 1.在控制台中新建一个项目。 2. 在脚本编辑器中,资源> 更改项目> 将项目更改为您刚刚创建的项目。 3. 再次访问控制台为“这个项目”启用云存储api。 console.developers.google.com/apis/library
-
Oauthplayground 仅用于测试。如果您要制作自己的脚本来运行它,您应该像@TheMaster 提到的那样创建自己的项目。
-
哇。我没有想过尝试这样的事情,但它奏效了。我想知道它以前试图通过什么项目来做到这一点?无论如何。非常感谢。这对我帮助很大。另外,我想我不能赞成评论或将其标记为解决方案。
标签: google-apps-script oauth-2.0 google-cloud-storage http-status-code-403 google-developers-console