Home > OS >  How do I get the parent folder using the Google Drive API?
How do I get the parent folder using the Google Drive API?

Time:11-12

I'm trying to write a method that gets the parent folder of the folder whose Id is passed in. I have tried many different variations, most of which come from accepted answers here, but every one causes an exception.

For example, the following code...

public async Task<DriveFile> GetParentFolder(string folderId) {
  FilesResource.ListRequest request = _service.Files.List();
  request.Q = $"parents contains '{folderId}'";
  request.Fields = "*";
  FileList files = await request.ExecuteAsync();
  return files.Files[0];
}

...throws the following exception...

Error: The service drive has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid Value [400]
Errors [
    Message[Invalid Value] Location[q - parameter] Reason[invalid] Domain[global]
]

I have tried many values for the Q and Fields properties, but all result in the same exception.

I have other code working with the API, so it's not the basic service that's a problem, and I've used the API to get the Ids of some folders, so I know I'm passing in a valid value.

One of the problems is that v2 of the API had a Parents list, which looks like it does what I want, but this seems to be missing in v3.

Anyone able to help me? Thanks

CodePudding user response:

Your going about it the wrong way you dont need to use file.list you already have the file id just use file.get.

Lets say i have the folder id here.

{
   "kind": "drive#file",
   "id": "1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7",
   "name": "Current Badges (2019-21)",
   "mimeType": "application/vnd.google-apps.folder"
  },

As you can see in this example i have the id and the mime type is a folder.

All i need to do is do a file.get

var request = _service.Files.Get("1bzDkXlcND_yycIcbqwr1YYZ98-Yv7SG7");
request.Fields = "parents";
var response = request.Execute();

The response will contain a filed called parents which is the parent of the folder.

As you can see if you already know the file id or in this case the folder id. Then you really just need to use file.get to get all the information about that id.

There's really no reason to use file.list.

  • Related