【发布时间】:2020-02-20 13:33:43
【问题描述】:
我正在开发一个连接器,为了获取数据需要对 API 进行两次单独的调用。我注意到有时我会收到以下错误:
{ [Exception: Address unavailable: https://myapi.call] name: 'Exception' }
这个响应与调用的 API 无关,因为我得到了一个有效的200 响应,所以错误必须来自我用来获取数据的UrlFetchApp。此外,它只发生在需要多次同时调用 API 的更复杂的报告中。所以我想也许我达到了一些配额并决定使用Utilities.sleep()。然而,它似乎只能在相同的执行上下文中工作。因此,例如,如果我有一份报告,则只有一个 getData() 执行,因此 myUtilities.sleep() 可以正常工作:
如您所见,我指定了 1 秒的间隔。但是,当我在 Data Studio 仪表板中有多个报告时,对于相同的代码,结果如下:
如您所见,似乎有 12 个执行上下文同时触发。所以我Utilities.sleep() 功能无法阻止它。这是非常有问题的,因为首先我迟早会超过我调用的 API 的限制,其次我似乎已经超过了UrlFetchApp 的限制。
有没有人想出解决这个问题的方法?提前致谢。
【问题讨论】:
-
您是在同一个脚本项目中提出请求吗?您能否分享脚本以更好地帮助您?错误显示在哪一行?是在使用
fetch方法的那一行吗? -
1.是的。这是一个 Google Data Studio 连接器,它使用一个数据源对该源进行多次调用。 2. 目前不使用我不想透露的 Oauth 凭据。我必须准备另一个演示版本的脚本,但这可能需要一些时间。 3. 在我的
try catch声明中。如果我删除它,错误将显示在调用UrlFetchApp的行上。
标签: javascript google-apps-script google-data-studio