google-apps-script - UrlFetchApp 在脚本编辑器中工作,而不在文档中工作

标签 google-apps-script google-sheets google-sheets-api

我有一个适用于表格的 Google Apps 脚本,它向 Google Books API 发出请求,以按书名/作者查找 ISBN,并且在脚本编辑器中测试时,这些请求可靠地工作,但当我使用相同的数据进行测试时在电子表格本身中,它失败并出现以下错误:

Request failed for https://www.googleapis.com/books/v1/volumes?q=Deedy%2C%20Carmen%20Agra%2014%20Cows%20for%20America returned code 403. Truncated server response: { "error": { "errors": [ { "domain": "global", "reason": "unknownLocation",
 "message": "Cannot determine user location for geogra... (use muteHttpExceptions option to examine full response) (line 55).

这是在脚本编辑器中使用相同数据成功运行相同函数的执行记录:

[16-08-05 14:39:09:772 EDT] Starting execution
[16-08-05 14:39:10:558 EDT] UrlFetchApp.fetch([https://www.googleapis.com/books/v1/volumes?q=Deedy%2C%20Carmen%20Agra%2014%20Cows%20for%20America]) [0.778 seconds]
[16-08-05 14:39:10:559 EDT] HTTPResponse.getResponseCode() [0 seconds]
[16-08-05 14:39:10:559 EDT] HTTPResponse.getContentText() [0 seconds]
[16-08-05 14:39:10:569 EDT] Logger.log([found title match for '%s': '%s', [14 Cows for America, 14 Cows for America]]) [0 seconds]
[16-08-05 14:39:10:583 EDT] Logger.log([result: %s, [9781561454907]]) [0 seconds]
[16-08-05 14:39:10:584 EDT] Execution succeeded [0.804 seconds total runtime]

我已经制作了source code如果相关的话可用。

最佳答案

The URL Fetch service uses Google's network infrastructure for efficiency and scaling purposes.

并且“Google Books API 结果受到服务器或客户端应用程序 IP 地址的限制”( doc )。由于某种原因,它无法确定运行 Google Apps 脚本的服务器位置,并返回错误无法确定地理限制操作的用户位置。您可以尝试发送参数country,只需更改这一行:

var isbnEndpoint = "https://www.googleapis.com/books/v1/volumes?q=";

对此:

var isbnEndpoint = "https://www.googleapis.com/books/v1/volumes?country=US&q=";

关于google-apps-script - UrlFetchApp 在脚本编辑器中工作,而不在文档中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38795900/

相关文章:

google-sheets - 向 Google Sheet 折线图添加一条垂直线

google-apps-script - 谷歌应用程序脚本 : You do not have permission to call prompt

python - 收到错误 400 : redirect_uri_mismatch when trying to use OAuth2 with Google Sheets from a Django view

internationalization - Google Apps 脚本国际化 (i18n)

google-apps-script - 是否可以在 Apps Script 中获取新的 Google 幻灯片演示数据?

time - 如果时间在时间​​范围内,Google 表格会进行计数

php - 谷歌表 API 4 : How to append to the end of the row with PHP

javascript - Google Sheets - 循环浏览表格合并数据

javascript - 串联代码运行得非常慢谷歌脚本

javascript - 通过 Google Apps 脚本检索修订文本