这是一个奇怪的,我希望有人能弄清楚。我已经写了一个函数,使用谷歌表s4和谷歌驱动器。我正在尝试做的一件事是将googledrive文档(电子表格)从基本文件夹移动到指定文件夹。我昨天还能很好地工作,所以我不知道发生了什么,因为今天早上我来的时候它就坏了。奇怪的是,如果我对这个函数进行步进,它会正常工作。只是当我一次运行这个函数时,我得到了错误。
我使用文件夹ID而不是名称,并使用drive_find来获取正确的文件夹ID。我也使用表ID而不是名称。这个文件夹已经存在了,就像我说的,它昨天还在工作。
outFolder <- 'exact_outFolder_name_without_slashes'
createGoogleSheets <- function(
outFolder
){
folder_id <- googledrive::drive_find(n_max = 10, pattern = outFolder)$id
data <- data.frame(Name = c("Sally", "Sue"), Data = c("data1", "data2"))
sheet_id <- NA
nameDate <- NA
tempData <- data.frame()
for (i in 1:nrow(data)){
nameDate <- data[i, "Name"]
tempData <- data[i, ]
googlesheets4::gs4_create(name = nameDate, sheets = list(sheet1 = tempData)
sheet_id <- googledrive::drive_find(type = "spreadsheet", n_max = 10, pattern = nameDate)$id
googledrive::drive_mv(file = as_id(sheet_id), path = as_id(folder_id))
} end 'for'
} end 'function'
我不认为这将是一个可复制的例子。违规代码在函数内的for循环中,当我一步一步地运行它时,它工作得很好。Folder_id在函数内定义,但在for循环之外。Sheet_id在for循环中。当我将folder_id移动到for循环时,它仍然不起作用,尽管我不知道为什么它会改变任何东西。这些只是我尝试过的东西。我确实通过使用:
对google drive和googleesheets4有适当的授权googledrive::drive_auth()
googlesheets4::gs4_auth(token = drive_token())
& lt;错误/rlang_error>as_parent()
错误:! 通过path
指定的父级无效:x不存在
回溯:
- global creategooglessheets (inputFile, outPath, addNames)
- googledrive::drive_mv(file = as_id(sheet_id), path = as_id(folder_id))
- googledrive::: as_parent(路径)执行
rlang::last_trace()
命令查看完整的上下文
回溯:x
- -global creategooglessheets (inputFile, outPath, addNames)
- -googledrive::drive_mv(file = as_id(sheet_id), path = as_id(folder_id))
-
-googledrive:::as_parent(path)
-
-googledrive:::drive_abort(c(invalid_parent, x = "Does not exist."))
-
-cli::cli_abort(message = message, ..., .envir = .envir)
-
-rlang::abort(message, ..., call = call, use_cli_format = TRUE)
我已经尝试将folder_id更改为我的google驱动器W:/my drive的确切路径…得到了相同的误差。我应该提一下,我也试过删除文件夹并重新创建它。
有人有什么想法吗?
提前感谢您的帮助!
我不能评论,因为我还没有名声,但我相信你在for循环中少了一个括号。
下面需要第二个括号:
for (i in 1:nrow(tempData) ) {
...
}