我有一个从DB读取数据并将其写入Google电子表格的R脚本(该脚本读取多个表,每个表写入电子表格的不同工作表)。它工作得很好,但我遇到的问题是,由于某些表非常大,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在超时时给出的错误,它仍然给出以下信息:" error : Server error:(503) UNAVAILABLE“。
如果几秒钟后我对失败的表重试函数,它通常可以工作,所以我知道这只是一个重试的问题(如果必要的话,2到3次),给表几秒钟的时间来处理信息。
任何帮助或提示,使这项工作将非常感谢!
发布于 2021-06-23 20:38:17
已解决:使用try运行脚本并将其保存到新变量可以解决问题,如下所示:
result=try(range_write(my_sheet,my_data,sheet = sheet,range = "A1",col_names = TRUE))
这种方法如果有效,则写入范围,但如果失败,则将错误消息保存在“result”变量中。然后,可以在while函数中检查结果,以便在必要时重复执行。
https://stackoverflow.com/questions/67988543
复制相似问题