2015-02-10 3 views
2

Я использую очень классный скрипт Google, который я нашел в Github (источник: https://gist.github.com/beezly/9b2de3749d687fdbff3f), чтобы получить температуру на моем термостате Nest и зарегистрировать ее в Google Spreadsheet.UrlFetchApp Google Script - ошибка ограничения скорости для термостата гнезда - код ответа 429

Он отлично работает, когда я запускаю сценарий вручную, но не тогда, когда я использую триггер времени для его автоматического запуска.

При размещении учетных данных в API на этой линии:

Line 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-адрес источника Google, используемый триггером, превысил предел API-интерфейса Nest.

У вас есть решение для меня? Я рассмотрел использование прокси-сервера, но функция UrlFetchApp.fetch, похоже, не принимает его.

Спасибо,

PF

+0

Изменить объект вариант, как показано ниже. Это должно дать вам полную возвращенную ошибку из гнезда api. var options = { "method": "post", "Полезная нагрузка": полезная нагрузка, "muteHttpExceptions": "true" }; –

+0

Я сделал это изменение, но оно все равно дает мне ту же ошибку (которая, если честно, уже достаточно ясна) – pfc

+0

Надеюсь, это сообщение в блоге поможет вам https://community.nest.com/message/43271 – KRR

ответ

1

Я только столкнулся с ошибкой «Слишком много запросов» в процессе разработки, когда я испытывал тот же сценарий. Мне удалось запустить эту функцию ежечасно без проблем, даже каждые 5 минут.

Чтобы запустить этот сценарий, как ожидается, на триггере просто переключите getData() на doGet(), опубликуйте его как веб-приложение с анонимным доступом, затем создайте еще одну функцию (я назвал ее getData()), что делает запрос на ваш опубликованный url веб-приложения (который вызывает doGet()), а затем просто создайте свой триггер, основанный на времени, для запуска нового getData().

вот моя версия https://gist.github.com/jbutters/bece2fffe85080fe4314

+0

Thx много для вашего ответа. Я пробовал ваш код, он работает, когда я запускаю функцию doGet(), которая формирует редактор сценариев. Это не работает, когда я запускаю getData() (ничего не делает). Когда я публикую приложение и вызываю URL-адрес приложения, я получаю сообщение об ошибке «Не удалось выполнить запрос для https://home.nest.com/user/login, возвращаемого кодом 400. Усеченный ответ сервера: {« error »:« access_denied », «error_description»: «недопустимые учетные данные пользователя»} (используйте параметр muteHttpExceptions для проверки полного ответа) ». Кажется довольно любопытным, поскольку, как я уже сказал, doGet() хорошо работает с редактором сценариев. Есть идеи? – pfc

+0

попробуйте сохранить новую версию, а затем опубликовать эту новую версию, ссылка должна остаться прежней, но дважды проверьте или проверьте ссылку «последний код»/dev в сеансе входа в браузер (ссылка «последний код»/dev не будет работать с временным триггером) – jbutters

+0

'последний код'/dev link works ... но мне нужно войти в систему, чтобы использовать его. Официальный URL-адрес веб-приложения по-прежнему возвращает ту же ошибку 400, но мне не нужно войти в нее, чтобы использовать ее. – pfc

 Смежные вопросы

  • Нет связанных вопросов^_^