What's the right way to find files by "full path" in Google Drive API v2

James Gan picture James Gan · Jun 24, 2013 · Viewed 9.2k times · Source

dear all

I'm trying to find a list of documents by "full path". And after reading the API reference, it seems to be a complex task. Assume my path is something like /path0/path1/path2/...

  1. List children of root folder and find all children with name equals "path0" and put them to a list "result0"
  2. Find all children of items in "result0" with name equals "path1" and put them to a list "result1"
  3. Find all children of items in "result1" with name equals "path2" and ...

Above approach seems very low efficient cause it needs multiple interactions between my application and Drive. I understand Google Drive allows multiple files share the same file name even in the same folder. It will be handy if I can do something like:

listDocByFullPath("path0/path1/path2")

Is this possible with current version of Google Drive SDK? If it's not there yet, I was wondering if there is a simpler way than what I listed here.

BTW, as my application is purely a back-end service, it's not possible to use file picker provided by Google.

Cheers.

Answer

Burcu Dogan picture Burcu Dogan · Jun 24, 2013

Unlike conventional file systems, a file could be under multiple folders on Drive. Folders are pretty much similar what labels are. Therefore, conventional paths dont always work within our abstraction. I'd suggest you to follow the logic below:

  1. List files with q = 'root' in parents and title = 'path0' and mimeType = 'application/vnd.google-apps.folder' and pick the first result.
  2. If there is a matching result, get the folder's id and perform another listing with '<id of path0>' in parents and title = 'path1' and mimeType='application/vnd.google-apps.folder' and pick the first result.
  3. Keep going until you reach to your target folder.