Ao rodar essa função, o R vai varrendo os arquivos e solta a seguinte mensagem:
Files retrieved so far: num,
onde num vai variando conforme os arquivos vão sendo listados.
Exemplo de uso:
faço faculdade e tenho 6 matérias por semestre
cada matéria tem 6 unidades que vão de I a VI
cada unidade exige que se faça um relatório final para entregar
quero listar todos os relatórios de uma pasta específica
como meus relatórios chamam “Unidade I.pdf” independente da matéria não adianta usar a função * drive_find *, pois eu não sei qual matéria é a “dona” do arquivo Unidade I.pdf que aparece na lista.
Obs.: em python o código funciona em segundos.
service.files().list(q="'" + id_pasta + "' in parents").execute()
Obs.2: desculpem a falta de um exemplo reprodutível, mas não sei como criar um considerando o acesso ao drive.
Larissa, pela documentação do pacote googledrive, não parece existir mesmo um jeito de acelerar uma busca por caminho; o Drive sempre vai varrer todos os seus arquivos a menos que você forneça o ID do que você quer. Sendo assim, eu acho que você tem 2 opções: fazer um processo iterativo que busca uma parte do caminho de cada vez ou fazer a busca direto com o ID da pasta5.
Abaixo você pode ver o meu código para cada uma das estratégias (o arquivo que eu quero é ~/pasta1/pasta2/pasta3/doc):
No código da primeira opção, eu começo com o drive_find() que você diz funcionar. A partir daí, eu pego o ID da pasta, faço um drive_ls()usando esse ID e filtro os arquivos para que reste apenas a próxima pasta do caminho. Eu repito isso até chegar no doc.
No código da segunda opção, eu uso diretamente o ID da pasta3 e listo o seu conteúdo. Isso é equivalente às 2 últimas linhas da solução anterior e assume que você de fato já tem o ID da pasta3 (pelo seu código em Python, você parece ter sim esse ID).
# Achar um arquivo listando conteúdos
"pasta1" |>
googledrive::drive_find(n_max = 30) |>
dplyr::pull(id) |>
googledrive::drive_ls() |>
dplyr::filter(name == "pasta2") |>
dplyr::pull(id) |>
googledrive::drive_ls() |>
dplyr::filter(name == "pasta3") |>
dplyr::pull(id) |>
googledrive::drive_ls()
#> # A dribble: 1 × 3
#> name id drive_resource
#> <chr> <drv_id> <list>
#> 1 doc 1DJ5i7Jqm1zl_vEhfNYENUgsOV3s8G6OgQjw9fgpTOb4 <named list [35]>
# Pegar direto pelo ID da pasta3
googledrive::drive_ls(googledrive::as_id("18t1HL_xcZkE63ROhdpqgyg2me6WCrxzf"))
#> # A dribble: 1 × 3
#> name id drive_resource
#> <chr> <drv_id> <list>
#> 1 doc 1DJ5i7Jqm1zl_vEhfNYENUgsOV3s8G6OgQjw9fgpTOb4 <named list [35]>