0

我有一个 R 脚本,它从数据库读取数据并将其写入 Google 电子表格(该脚本读取多个表,每个表都写入电子表格的不同工作表)。它工作正常,但我遇到的问题是,由于某些表非常大,googlesheets4::write_range 函数随机给出“超时”错误,因为工作表仍在忙于处理之前写入的表。我尝试编写代码来捕获错误并使用重试(从包重试)函数,但它似乎不起作用,我只是找不到合适的方法来捕获 range_write 函数在计时时给出的错误出去。我需要的应该是这样的(我猜):

retry::retry(
 range_write(my_sheet,
             my_data,
             sheet = sheet,
             range = "A1",
             col_names = TRUE),
 when = "some error",
 max_tries = 3,
 interval = 10)

如前所述,前面的代码有效,但未能捕捉到 range_write 在超时时给出的错误,它仍然给出以下内容:“错误:服务器错误:(503)不可用”。

如果几秒钟后我重试失败的表的函数,它通常可以工作,所以我知道这只是重试(如果必要的话,2或3次)的问题,给工作表一些时间来处理信息.

任何帮助或提示使这项工作将不胜感激!

4

1 回答 1

0

已解决:使用 try 运行脚本并将其保存到新变量可以解决问题,如下所示:

结果=尝试(范围写入(我的表,我的数据,表=表,范围=“A1”,col_names=真))

如果它有效,则写入范围,但如果失败,则将错误消息保存在“结果”变量中。然后可以在 while 函数中检查结果以在必要时重复它。

于 2021-06-23T12:38:17.440 回答