1

我正在尝试在 Google Apps Script 脚本中向Google Street View Publish API发出 HTTP GET 请求,以获取照片列表并将有关它们的元数据保存到 Google 电子表格中。

我在脚本上使用的代码来联系 API:

var url = 'https://streetviewpublish.googleapis.com/v1/photos?fields=nextPageToken%2Cphotos&key=' + API_KEY;

var response = UrlFetchApp.fetch(url, {
    muteHttpExceptions: true,
    headers: {
        //the accessToken is borrowed from the Apps Script Infrastructure `ScriptApp.getOAuthToken()`
        //source: https://www.youtube.com/watch?v=aP6pxK3jexc
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken()
    }
});
console.log('API response:\n' + response);

oauthscopes.json并在脚本的清单文件中包含街景身份验证:

...
"oauthScopes": [
  "https://www.googleapis.com/auth/streetviewpublish", 
  "https://www.googleapis.com/auth/script.external_request", 
  "https://www.googleapis.com/auth/spreadsheets"
]
...

一直使用基于时间的触发器每 15 分钟运行一次脚本,它已经工作了几个小时并返回了一个带有帐户照片的 JSON 对象,直到 API 停止返回响应,现在是只是返回一个空的 JSON 对象{}

我认为我没有消耗 API 使用的报价,我在 GCP 仪表板中的数字如下:

报价数字 1

报价数字 2

试图创建另一个API KEY并在脚本中使用它,但仍然没有运气。

此外,当尝试从Google APIs Explorer测试 API 、授权和执行时,它也会给我200一个带有空 JSON 对象的响应代码。以前可以用,现在不行了!

这里可能有什么问题?


编辑:

正如评论中所建议的,我试图:

  • 使用或不使用 API 密钥和其他参数调用 API 端点,如下所示:

https://streetviewpublish.googleapis.com/v1/photos?fields=nextPageToken%2Cphotos&key=' + API_KEY

https://streetviewpublish.googleapis.com/v1/photos?key=' + API_KEY

https://streetviewpublish.googleapis.com/v1/photos

  • 此外,还尝试从帐户安全检查中撤销对 Google APIs Explorer 和 Google Apps Script 上的脚本的访问权限。正因为如此,当尝试再次运行它时,它会打开一个弹出窗口来再次请求授权/许可,我也同意了。

  • 尝试注销 Google 帐户并清除浏览器的缓存。

然而,仍然是相同的空 JSON 对象响应!


编辑2:

  • 两天前还停止了脚本的基于时间的触发器,仍然没有运气!
4

1 回答 1

3

文档说pageSize默认为 100。事实并非如此。如果您指定pageSize参数,它将返回带有照片的响应。

于 2020-06-02T21:22:34.863 回答