1

Je souhaite répertorier tous les fichiers d'un dossier partagé avec mon compte de service. J'essaie de comprendre quels fichiers ont un attribut 'parent' défini sur l'ID du dossier ou le nom du dossier. Cependant, tous les objets que je produis affichent "NULL" pour presque tous les champs. J'ai parcouru l'API Google Drive v3 et je ne trouve même pas la fonction listFiles(). De plus, la documentation recommande d'utiliser la fonction Files.list pour sortir une liste de fichiers mais lorsque j'utilise la fonction Files.list, j'obtiens une erreur comme si la méthode n'existait pas. Je suis donc retourné à l'aide ListFiles() ... Mon code ressemble à ceci:Pourquoi les propriétés des fichiers Google_Service_Drive ne renvoient-elles que des valeurs nulles?

public function getTitlesAndIDs($folderID) 
{ 

    // $capabilities = new \Google_Service_Drive_DriveFileCapabilities(); 
    // $capabilities->canListChildren = true; 
    $files = $this->driveService->files->listFiles(); 

    var_dump($files); 
} 

Essayer d'ajouter des fonctionnalités juste renvoie NULL aussi bien. Quand je lance ListFiles() Je reçois la sortie comme ceci:

["files"]=> 
    array(100) { 
    [0]=> 
    object(Google_Service_Drive_DriveFile)#77 (65) { 
     ["collection_key":protected]=> 
     string(6) "spaces" 
     ["appProperties"]=> 
     NULL 
     ["capabilitiesType":protected]=> 
     string(42) "Google_Service_Drive_DriveFileCapabilities" 
     ["capabilitiesDataType":protected]=> 
     string(0) "" 
     ["contentHintsType":protected]=> 
     string(42) "Google_Service_Drive_DriveFileContentHints" 
     ["contentHintsDataType":protected]=> 
     string(0) "" 
     ["createdTime"]=> 
     NULL 
     ["description"]=> 
     NULL 
     ["explicitlyTrashed"]=> 
     NULL 
     ["fileExtension"]=> 
     NULL 
     ["folderColorRgb"]=> 
... 

Pourquoi les valeurs qui reviennent tout comme NULL et comment puis-je résoudre ce problème, je peux donc effectuer une recherche par dossiers parents? Existe-t-il un équivalent php à la fonction Files.list? Merci d'avance.

+0

Son probablement nul parce que votre compte de service n'a pas encore de fichiers. Juste partager un répertoire ne lui donne pas par défaut accès aux fichiers dans ce répertoire. De plus, il n'y a pas de liste de tout ce dont vous avez besoin pour faire une file.list puis paginer sur des pages de données supplémentaires. – DaImTo

+0

Merci pour le commentaire. Le répertoire contient des fichiers. J'ai également passé en revue à la main et partagé chaque document avec le compte de service. Php n'utilise pas "." notation. Il utilise files-> list ... mais il n'y a pas de fonction dans l'API sous le paramètre "files" appelé "list". Il n'y a que listFiles() qui ne fait pas ce que j'ai besoin de faire. – Knight

Répondre

1

Vous devez d'abord vous assurer qu'il existe des fichiers auxquels le compte de service a accès. Une fois que vous avez fait cela, cela devrait être capable de lister les fichiers.

$service = new Google_Service_Drive($client); 

// Print the names and IDs for up to 10 files. 
$optParams = array(
    'pageSize' => 10, 
    'fields' => 'nextPageToken, files(id, name)' 
); 
$results = $service->files->listFiles($optParams); 

if (count($results->getFiles()) == 0) { 
    print "No files found.\n"; 
} else { 
    print "Files:\n"; 
    foreach ($results->getFiles() as $file) { 
    printf("%s (%s)\n", $file->getName(), $file->getId()); 
    } 
} 

code arraché à PHP Quickstart

+0

Cela m'a aidé à trouver la réponse. Pour quelqu'un d'autre qui pourrait trouver cette question ... Apparemment, en PHP, la fonction Files.list "est" la fonction listFiles() bien que le dernier nom n'apparaisse pas sur la page de l'ancien. – Knight

1

En plus de ce que dit @DalmTo, une chose importante à signaler explicitement: vous avez reçu NULL pour presque tous les domaines parce que vous n'avez pas fourni une liste de champs, 'fields' en tant que paramètre optionnel.

+0

Ceci est la réponse valide pour moi! J'ai oublié ce param dans la requête, le code d'exemple demande seulement l'identifiant et le nom. Si vous n'entrez aucun autre champ (comme "trashed" dans mon cas), sa valeur sera toujours nulle. Merci! – spacorum