Файлы запросов Google API в нескольких папках с php - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь запросить диск Google с использованием нескольких идентификаторов папок.

Это мой запрос

 $optParams = array(
 'pageSize' => 1000
    ,'fields' => 'nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents, kind, trashed, owners, modifiedTime)'
    ,[q] => "trashed=false and ('folder-id-1' in parents or 'folder-id-2' in parents or 'folder-id-3' in parents or 'folder-id-4' in parents or 'folder-id-5' in parents)"
   );                

 $service = new \Google_Service_Drive($this->GoogleClient);
 $results = $service->files->listFiles($optParams);

Но он возвращает файлы только из первых 2 папок


Изменить с более подробной информацией о моем запросе и возвращаемых результатах. Идентифицированы идентификаторы папок.

    $fldrs = [];
    $fldrs[] = "folder-id-1"; // Toolkit 3 folders (Shared with me)
    $fldrs[] = "folder-id-2"; // Untitled folder 1 file (mine)
    $fldrs[] = "folder-id-3"; // Logos 14 files (not mine)
    $fldrs[] = "folder-id-4"; // Posters (8 files - not mine)
    $fldrs[] = "folder-id-5"; // Promo Assets (11 files not mine)

    $q = "trashed=false and (";
    $MaxFolders = 5;
    for ($i=0;$i<$MaxFolders;$i++)
    {
        if ($i > 0) $q .= " or ";
        $q .= "'{$fldrs[$i]}' in parents";
    }

    $q .= ")";

    $optParams = array(
         'pageSize' => 1000
        ,'fields' => 'nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents, kind, trashed, owners, modifiedTime, driveId)'
        ,q => $q
      );                

    $service = new \Google_Service_Drive($this->GoogleClient);
    $results = $service->files->listFiles($optParams);

    ------

$ optParams (из отладки)

    array(3) (
      [pageSize] => (int) 1000
      [fields] => (string) nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents, kind, trashed, owners, modifiedTime, driveId)
      [q] => (string) trashed=false and ('folder-id-1' in parents or 'folder-id-2' in parents or 'folder-id-3' in parents or 'folder-id-4' in parents or 'folder-id-5' in parents)
    )

Возвращает только 5 файлов (папки 3 и 4 и 3 файла: 1 файл из папки 2, 1 файл из папки 3, 1 файл из папки 5)

Если я проработаю и просто сделаю 1-ую папку, я получу 3 возвращенные папки. Если я делаю 2 папки, я получаю 2 папки и 1 файл. Если я делаю 3 папки, я получаю 2 папки и 2 файла. Если я получаю 4 папки, я получаю 2 папки и 2 файла (так же, как и 3 папки)

Если я выберу только папку 3 (логотипы), я получу все 14 файлов.

Большинство файлов не мои. они делятся со мной.

1 Ответ

1 голос
/ 20 апреля 2020

Параметр не является массивом. Попробуй это.

 $optParams = array(
 'pageSize' => 1000
    ,'fields' => 'nextPageToken, files(contentHints/thumbnail,fileExtension,iconLink,id,name,size,thumbnailLink,webContentLink,webViewLink,mimeType,parents, kind, trashed, owners, modifiedTime)'
    ,'q' => "trashed=false and ('folder-id-1' in parents or 'folder-id-2' in parents or 'folder-id-3' in parents or 'folder-id-4' in parents or 'folder-id-5' in parents)"
   );  
...