2

我想使用谷歌驱动器 API 从我的谷歌驱动器获取所有文件和文件夹名称。

我的查询是这样的:

 GTLQueryDrive *query = [GTLQueryDrive queryForFilesList];

    query.q = @"";
     //or i also use this code

  query.q = @"mimeType = 'text/plain'";

甚至我也尝试过这段代码:

-(void)getFileListFromSpecifiedParentFolder {
    GTLQueryDrive *query2 = [GTLQueryDrive queryForChildrenListWithFolderId:@"root"];
    query2.maxResults = 1000;

    // queryTicket can be used to track the status of the request.
    [self.driveService executeQuery:query2
                  completionHandler:^(GTLServiceTicket *ticket,
                                      GTLDriveChildList *children, NSError *error) {
                      NSLog(@"\nGoogle Drive: file count in the folder: %d", children.items.count);
                      //incase there is no files under this folder then we can avoid the fetching process
                      if (!children.items.count) {
                          return ;
                      }

                      if (error == nil) {
                          for (GTLDriveChildReference *child in children) {

                              GTLQuery *query = [GTLQueryDrive queryForFilesGetWithFileId:child.identifier];

                              // queryTicket can be used to track the status of the request.
                              [self.driveService executeQuery:query
                                            completionHandler:^(GTLServiceTicket *ticket,
                                                                GTLDriveFile *file,
                                                                NSError *error) {

                                                NSLog(@"\nfile name = %@", file.originalFilename);
                                            }];
                          }
                      }
                  }];
}
4

1 回答 1

2
-(void)fetchGoogleDriveFileListWithfolderId:(NSString *)folderId
    :(void (^)(NSMutableArray *, NSError*))completionBlock
{
    GTLQueryDrive *query = [GTLQueryDrive queryForFilesList];
    query.q =[NSString stringWithFormat:@"'%@' in parents and trashed=false", folderId];

    GTLServiceTicket *ticketListing = [self.driveService
        executeQuery:query completionHandler:^(GTLServiceTicket *ticket,GTLDriveFileList *files, NSError *error)
    {
        NSMutableArray *mainArray=[[NSMutableArray alloc]init];

        if (error == nil)
        {
            completionBlock(files.items,nill);
        }
        else
        {
            NSLog(@"An error occurred: %@", error);
            completionBlock(nil,error);
        }
    }];
}

这里 query.q =[NSString stringWithFormat:@"'%@' in parents and trashed=false", folderId];

folderId 可能是“root”(对于根文件夹),sharedWithMe(对于共享文件夹)。如果要列出已删除的文件,请更改已删除的=true。

于 2015-01-14T02:01:12.063 回答