Исключение UrlFetchApp в коннекторе Google Data Studio - PullRequest
0 голосов
/ 20 февраля 2020

Я разрабатываю соединитель, который для получения данных должен сделать два отдельных вызова API. Я заметил, что время от времени я получаю следующую ошибку:

    { [Exception: Address unavailable: https://myapi.call] name: 'Exception' }

Этот ответ не имеет ничего общего с вызываемым API, потому что я получаю действительный ответ 200 для этого вызова, поэтому ошибка должна происходят из UrlFetchApp, который я использую для получения данных. Также это происходит только с более сложными отчетами, которые требуют много одновременных вызовов API. Поэтому я подумал, что, возможно, набрал некоторую квоту и решил использовать Utilities.sleep(). Однако кажется, что он работает только в одном контексте выполнения. Так, например, если у меня есть один отчет, будет только одно выполнение getData(), поэтому мой Utilities.sleep() будет работать нормально:

enter image description here

Как вы видите, что я указал 1 se c пробел. Однако для того же кода, когда у меня есть несколько отчетов на информационной панели Data Studio, результат будет следующим:

enter image description here

Как вы видите, кажется, что существует 12 контекстов выполнения стрельба одновременно. Так что функция Utilities.sleep() не может этому помешать. Это очень проблематично c, потому что, во-первых, я собираюсь превысить пределы API, которые я вызываю рано или поздно, во-вторых, кажется, что я уже превысил пределы UrlFetchApp. Кто-нибудь придумал решение этой проблемы? Заранее спасибо.

1 Ответ

1 голос
/ 21 февраля 2020

Data Studio будет выполнять отдельные вызовы getData для каждого элемента на странице, которая использует ваш соединитель. Чтобы избежать ограничения скорости или квоты, используйте Служба блокировки и, если возможно, Кэш скриптов приложений .

См. Chrome код соединителя UX для примеров обоих.

...