Google drive api to get all children is not working if I dynamically pass fileId to query
我正在尝试使用Google Drive API搜索文件夹的父级。在搜索查询中,我必须动态传递文件ID而不是硬编码。我尝试了下面的代码。但是我得到的文件未找到json响应。
在这里它不以fileId作为值,我认为它被认为是String
如果我对值进行硬编码,它将起作用。
FileList结果= service.files()。list()。setQ(" name ='testfile'").execute();
1 2 3 4 5 6 7 8 | for (com.google.api.services.drive.model.File file : result.getFiles()) { System.out.printf("Found file: %s (%s)\ ", file.getName(), file.getId()); String fileId =file.getId(); FileList childern = service.files().list().setQ(" + "file.getId()" in parents").setFields("files(id, name, modifiedTime, mimeType)").execute(); |
这应该有所帮助。
1 2 3 | String fileid=file.getId() service.files().list().setQ("'" + fileId +"'" +" in parents").setFields("files(id, name, modifiedTime, mimeType)").execute(); |
确保您具有有效的
我知道您的问题指出了Java,但这项工作的唯一示例是在C#中。据我所知,另一个问题是PageStreamer.cs在Java客户端库中没有等效项。
我希望C#和Java足够接近,以使您对如何使其在Java中工作有一些想法。我的Java知识是基本的报价,但是如果您想尝试将其转换,我也许可以帮助您调试它。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | try { // Initial validation. if (service == null) throw new ArgumentNullException("service"); // Building the initial request. var request = service.Files.List(); // Applying optional parameters to the request. request = (FilesResource.ListRequest)SampleHelpers.ApplyOptionalParms(request, optional); var pageStreamer = new Google.Apis.Requests.PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>( (req, token) => request.PageToken = token, response => response.NextPageToken, response => response.Files); var allFiles = new Google.Apis.Drive.v3.Data.FileList(); allFiles.Files = new List<Google.Apis.Drive.v3.Data.File>(); foreach (var result in pageStreamer.Fetch(request)) { allFiles.Files.Add(result); } return allFiles; } catch (Exception Ex) { throw new Exception("Request Files.List failed.", Ex); } |