Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recursive List Items #108

Open
wtimmerman-fitp opened this issue Mar 24, 2022 · 8 comments
Open

Recursive List Items #108

wtimmerman-fitp opened this issue Mar 24, 2022 · 8 comments
Labels
enhancement New feature or request

Comments

@wtimmerman-fitp
Copy link

Is there a way for list_items() to work recursively in directories? If not, this feature would be very handy to have.

First, to make sure I'm not misunderstanding how to use the package, I can run all of the following commands successfully:

site <- get_sharepoint_site(
  site_url = "https://[our subdomain].sharepoint.com"
)

drv <- site$get_drive()

drv$list_items()

drv$list_items(filter = "name eq '[name of some folder at top level of hierarchy]'")

But when i try to use filter with a name in one of the subfolders, doesn't seem to get results.

drv$list_items(filter = "name eq '[name of file in a subfolder with extension]'")
# [1] name  size  isdir id   
# <0 rows> (or 0-length row.names)

I've seen that there are some ways to do recursive operations by looking up child directories in for loops, but that seems like a non-starter for the volume of directories I need to iterate over, each of which with their own folder hierarchy.

My overall goal is to replicate something like the search feature on Sharepoint--I need to return a dataframe of document metadata for documents with a specific name scattered throughout our Sharepoint site.

@hongooi73
Copy link
Collaborator

Right now there is no built-in support for recursive directory listing. You could write something up yourself where you check for directories in the returned list and call list_items() recursively.

@hongooi73 hongooi73 added the enhancement New feature or request label Mar 24, 2022
@wtimmerman-fitp
Copy link
Author

Understood, thanks!

@msgoussi
Copy link

recursive will be handly specially when you are deleting subfolders,

@hongooi73
Copy link
Collaborator

@msgoussi recursive deleting of subfolders should already be handled automatically

@CBSti
Copy link

CBSti commented Jun 13, 2023

I created a gist for a very basic approach for a recursive file and directory listing function using a for loop.
https://gist.github.com/CBSti/ae0c2921e7986b517db3e6f3e3a4d0ba
I have not tested this with larger hierarchies/directory structures, but possibly someone could find this useful.

@jonocarroll
Copy link

I also ended up writing something to do this

https://gist.github.com/jonocarroll/d5d315f1504d4cf8a06caf0bfdf58af5

This uses a depth-first search to recursively list the files and folders and doesn't have additional dependencies (base R). I use jsTree to interactively explore/search the results. I added a depth limit but this can be raised as required.

@elipousson
Copy link

I've started developing a package, {sharepointr}, to build out some "missing" features for {Microsoft365R} and added a function modeled on fs::dir_info() that includes both recursive item listings and a couple other user-friendly features.

Documentation is here: https://elipousson.github.io/sharepointr/reference/sp_dir_info.html

Code is here: https://github.com/elipousson/sharepointr/blob/HEAD/R/sp_dir.R

@hongooi73
Copy link
Collaborator

@elipousson that looks incredible!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants