R - googledrive::d rive_mv 给出错误"Parent specified via 'path' is invalid: x Does not exist"



这是一个奇怪的,我希望有人能弄清楚。我已经写了一个函数,使用谷歌表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不存在

回溯:

  1. global creategooglessheets (inputFile, outPath, addNames)
  2. googledrive::drive_mv(file = as_id(sheet_id), path = as_id(folder_id))
  3. googledrive::: as_parent(路径)执行rlang::last_trace()命令查看完整的上下文

回溯:x

  1. -global creategooglessheets (inputFile, outPath, addNames)
  2. -googledrive::drive_mv(file = as_id(sheet_id), path = as_id(folder_id))
  3. -googledrive:::as_parent(path)
    
  4.   -googledrive:::drive_abort(c(invalid_parent, x = "Does not exist."))
    
  5.     -cli::cli_abort(message = message, ..., .envir = .envir)
    
  6.       -rlang::abort(message, ..., call = call, use_cli_format = TRUE)
    

我已经尝试将folder_id更改为我的google驱动器W:/my drive的确切路径…得到了相同的误差。我应该提一下,我也试过删除文件夹并重新创建它。

有人有什么想法吗?

提前感谢您的帮助!

我不能评论,因为我还没有名声,但我相信你在for循环中少了一个括号。

下面需要第二个括号:


    for (i in 1:nrow(tempData) ) {
    ...
    }

相关内容