【发布时间】:2015-04-10 15:55:06
【问题描述】:
我使用我在 Github 上找到的一个非常酷的 Google 脚本(来源:https://gist.github.com/beezly/9b2de3749d687fdbff3f)来获取我的 Nest 恒温器上的温度并将其记录到 Google 电子表格中。
当我手动运行脚本时效果很好,但当我使用时间触发器自动运行它时就不行了。
在此行将凭据发布到 API 时:
第 12 行:var response = JSON.parse(UrlFetchApp.fetch('https://home.nest.com/user/login', options).getContentText());
引发的异常是:
https://home.nest.com/user/login 的请求失败,返回代码 429。 截断的服务器响应:请求过多(使用 muteHttpExceptions 检查完整响应的选项)(第 12 行,文件“代码”)
我怀疑不是我一个人在使用脚本,并且触发器使用的谷歌源 IP 已经超过了 Nest API 的限制。
你有什么解决办法吗?我考虑过使用代理服务器,但UrlFetchApp.fetch 函数似乎不接受它。
谢谢,
PF
【问题讨论】:
-
如下更改选项对象。这应该会为您提供来自 nest api 的完整返回错误。 var options = { "method" : "post", "payload" : payload, "muteHttpExceptions":"true" };
-
我做了更改,但它仍然给我同样的错误(老实说,这已经很明确了)
-
希望这篇博文对您有所帮助community.nest.com/message/43271
-
Nest 有两种速率限制:按设备/结构和按访问令牌。 Nest Documentation - Rate Limits 我认为“设备”是您的恒温器。访问令牌与谷歌服务器没有任何关系,我不认为。 Nest 正在监视诸如发件人的 IP 地址之类的东西,然后他们端的某个人应该能够为此调整速率限制。谷歌无法解决这个问题。也许联系 Nest?代码是手动运行的,所以语法必须正确。
-
当您手动运行代码时,您以某种方式输入密码和电子邮件?这是硬编码到你的脚本中的吗?
标签: json google-apps-script urlfetch http-response-codes http-status-code-429