Json 嵌套恒温器的速率限制错误-响应代码429

Json 嵌套恒温器的速率限制错误-响应代码429,json,google-apps-script,urlfetch,http-response-codes,http-status-code-429,Json,Google Apps Script,Urlfetch,Http Response Codes,Http Status Code 429,我使用在Github(源代码:)上找到的一个非常酷的Google脚本获取Nest恒温器上的温度,并将其记录到Google电子表格中 当我手动运行脚本时效果很好,但当我使用时间触发器自动运行脚本时效果就不好了 将凭证过帐到此行上的API时: 第12行:var response=JSON.parse(UrlFetchApp.fetch('https://home.nest.com/user/login,选项)。getContentText()) 提出的例外情况是: 请求返回代码429失败。 截断的服

我使用在Github(源代码:)上找到的一个非常酷的Google脚本获取Nest恒温器上的温度,并将其记录到Google电子表格中

当我手动运行脚本时效果很好,但当我使用时间触发器自动运行脚本时效果就不好了

将凭证过帐到此行上的API时:

第12行:
var response=JSON.parse(UrlFetchApp.fetch('https://home.nest.com/user/login,选项)。getContentText())

提出的例外情况是:

请求返回代码429失败。 截断的服务器响应:请求太多(使用muteHttpExceptions 检查完整响应的选项(第12行,文件“代码”)

我怀疑我不是唯一一个使用该脚本的人,触发器使用的Google源IP已经超过了Nest API的限制

你能帮我解决吗?我考虑过使用代理服务器,但是
UrlFetchApp.fetch
函数似乎不接受它

谢谢,

PF

我只是在测试同一个脚本时,在开发过程中遇到了“太多请求”错误。我能够让这个函数每小时运行一次,没有问题,甚至每5分钟运行一次

要在触发器上按预期运行此脚本,只需将getData()切换为doGet(),将其发布为具有匿名访问权限的web应用程序,然后创建另一个函数(我称之为getData()),向已发布的web应用程序url(调用doGet())发出请求,然后创建基于时间的触发器以运行新的getData()


这是我的版本

如下更改选项对象。这将为您提供nest api返回的完整错误。var options={“method”:“post”,“payload”:payload,“muteHttpExceptions”:“true”};我做了更改,但它仍然给了我相同的错误(老实说,这已经很明确了),希望这篇博文能够帮助您设置两种速率限制:每设备/结构和按访问令牌。“设备”是你的恒温器,我想。我认为,访问令牌与谷歌服务器没有任何关系。它正在监视发送者的IP地址,然后他们这边的某个人应该能够为此调整速率限制。谷歌无法解决这个问题。也许联系Nest?代码是手动运行的,所以语法必须正确。当您手动运行代码时,是否需要输入密码和电子邮件?这是你剧本中的硬编码吗?谢谢你的回复。我尝试了您的代码,当我从脚本编辑器运行doGet()函数时,它确实起作用。当我运行getData()时,它不工作(不执行任何操作)。发布应用程序并调用应用程序URL时,我收到错误“请求返回代码400失败。截断的服务器响应:{“错误”:“拒绝访问”,“错误描述”:“无效用户凭据”}(使用muteHttpExceptions选项检查完整响应)”。看起来很奇怪,因为正如我所说,doGet()在脚本编辑器中工作得很好。有什么想法吗?尝试保存一个新版本,然后发布该新版本,该链接应保持不变,但在登录的浏览器会话中使用“最新代码”/dev链接进行双重检查或测试(“最新代码”/dev链接将不适用于基于时间的触发器)“最新代码”/dev链接有效…”。。。但我需要登录才能使用它。官方web应用程序URL仍返回相同的错误400,但我不需要登录就可以使用它。由于“最新代码”有效,您是否尝试保存项目的新版本,然后发布该新版本:以:我(您的谷歌帐户)的身份执行应用程序,并且谁有权访问该应用程序:任何人,甚至匿名是的,现在确实有效,我没有正确理解你一开始说的“新版本”的意思,很抱歉。太多了!!