Rechercher des fichiers et des dossiers

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Utilisez la méthode files.list pour rechercher des fichiers et des dossiers.

Rechercher tous les fichiers et dossiers dans le Drive de l'utilisateur actuel

Utilisez la méthode files.list sans aucun paramètre pour renvoyer tous les fichiers et dossiers.

Rechercher des fichiers ou des dossiers spécifiques dans le Drive de l'utilisateur actuel

Pour rechercher un ensemble spécifique de fichiers ou de dossiers, utilisez la chaîne de requête q avec files.list pour filtrer les fichiers à renvoyer.

Cet exemple présente le format d'une chaîne de requête:

query_term operator values

Où :

  • query_term est le terme ou le champ de requête à rechercher. Pour afficher les termes de requête pouvant être utilisés pour filtrer les Drive partagés, reportez-vous à la section Termes de requête de recherche.
  • operator spécifie la condition du terme de requête. Pour connaître les opérateurs que vous pouvez utiliser avec chaque terme de requête, reportez-vous à la page Opérateurs de requête.
  • values sont les valeurs spécifiques que vous souhaitez utiliser pour filtrer vos résultats de recherche.

Par exemple, la chaîne de requête suivante filtre la recherche pour ne renvoyer que les dossiers:

q: mimeType = 'application/vnd.google-apps.folder'

L'exemple suivant montre comment utiliser une bibliothèque cliente pour filtrer les résultats de recherche en fonction des noms et ID des fichiers image JPEG. Cet exemple utilise le terme de requête mimeType pour limiter les résultats aux fichiers de type image/jpeg. Cet exemple définit également spaces sur drive pour affiner davantage la recherche à l'espace drive. Lorsque nextPageToken renvoie null, il n'y a plus de résultats.

Java

drive/snippets/drive_v3/src/main/java/SearchFile.java
import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.DriveScopes;
import com.google.api.services.drive.model.File;
import com.google.api.services.drive.model.FileList;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/* Class to demonstrate use-case of search files. */
public class SearchFile {

  /**
   * Search for specific set of files.
   *
   * @return search result list.
   * @throws IOException if service account credentials file not found.
   */
  public static List<File> searchFile() throws IOException {
           /*Load pre-authorized user credentials from the environment.
           TODO(developer) - See https://developers.google.com/identity for
           guides on implementing OAuth2 for your application.*/
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault()
        .createScoped(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(
        credentials);

    // Build a new authorized API client service.
    Drive service = new Drive.Builder(new NetHttpTransport(),
        GsonFactory.getDefaultInstance(),
        requestInitializer)
        .setApplicationName("Drive samples")
        .build();

    List<File> files = new ArrayList<File>();

    String pageToken = null;
    do {
      FileList result = service.files().list()
          .setQ("mimeType='image/jpeg'")
          .setSpaces("drive")
          .setFields("nextPageToken, items(id, title)")
          .setPageToken(pageToken)
          .execute();
      for (File file : result.getFiles()) {
        System.out.printf("Found file: %s (%s)\n",
            file.getName(), file.getId());
      }

      files.addAll(result.getFiles());

      pageToken = result.getNextPageToken();
    } while (pageToken != null);

    return files;
  }
}

Python

drive/snippets/drive-v3/file_snippet/search_file.py
from __future__ import print_function

import google.auth
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError


def search_file():
    """Search file in drive location

    Load pre-authorized user credentials from the environment.
    TODO(developer) - See https://developers.google.com/identity
    for guides on implementing OAuth2 for the application.
    """
    creds, _ = google.auth.default()

    try:
        # create drive api client
        service = build('drive', 'v3', credentials=creds)
        files = []
        page_token = None
        while True:
            # pylint: disable=maybe-no-member
            response = service.files().list(q="mimeType='image/jpeg'",
                                            spaces='drive',
                                            fields='nextPageToken, '
                                                   'files(id, name)',
                                            pageToken=page_token).execute()
            for file in response.get('files', []):
                # Process change
                print(F'Found file: {file.get("name")}, {file.get("id")}')
            files.extend(response.get('files', []))
            page_token = response.get('nextPageToken', None)
            if page_token is None:
                break

    except HttpError as error:
        print(F'An error occurred: {error}')
        files = None

    return files


if __name__ == '__main__':
    search_file()

Node.js

drive/snippets/drive_v3/file_snippets/search_file.js
/**
 * Search file in drive location
 * @return{obj} data file
 * */
async function searchFile() {
  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app
  const auth = new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const service = google.drive({version: 'v3', auth});
  const files = [];
  try {
    const res = await service.files.list({
      q: 'mimeType=\'image/jpeg\'',
      fields: 'nextPageToken, files(id, name)',
      spaces: 'drive',
    });
    Array.prototype.push.apply(files, res.files);
    res.data.files.forEach(function(file) {
      console.log('Found file:', file.name, file.id);
    });
    return res.data.files;
  } catch (err) {
    // TODO(developer) - Handle error
    throw err;
  }
}

PHP

drive/snippets/drive_v3/src/DriveSearchFiles.php
use Google\Client;
use Google\Service\Drive;
function searchFiles()
{
    try {
        $client = new Client();
        $client->useApplicationDefaultCredentials();
        $client->addScope(Drive::DRIVE);
        $driveService = new Drive($client);
        $files = array();
        $pageToken = null;
        do {
            $response = $driveService->files->listFiles(array(
                'q' => "mimeType='image/jpeg'",
                'spaces' => 'drive',
                'pageToken' => $pageToken,
                'fields' => 'nextPageToken, files(id, name)',
            ));
            foreach ($response->files as $file) {
                printf("Found file: %s (%s)\n", $file->name, $file->id);
            }
            array_push($files, $response->files);

            $pageToken = $response->pageToken;
        } while ($pageToken != null);
        return $files;
    } catch(Exception $e) {
       echo "Error Message: ".$e;
    }
}

Pour limiter la recherche aux dossiers, utilisez la chaîne de requête pour définir le type MIME sur q: mimeType = 'application/vnd.google-apps.folder'

Pour en savoir plus sur les types MIME, consultez Types MIME pour Google Workspace et Drive.

Exemples de chaînes de requête

Ce tableau présente des chaînes de requête de base. Le code réel varie en fonction de la bibliothèque cliente que vous utilisez pour votre recherche.

Ce que vous souhaitez interroger Exemple
Fichiers nommés "hello" name = 'hello'
Fichiers dont le nom contient les mots "bonjour" et "au revoir" name contains 'hello' and name contains 'goodbye'
Fichiers dont le nom ne contient pas le mot "bonjour" not name contains 'hello'
Dossiers qui sont des applications Google ou qui sont de type MIME mimeType = 'application/vnd.google-apps.folder'
Fichiers qui ne sont pas des dossiers mimeType != 'application/vnd.google-apps.folder'
Fichiers contenant le texte "important" et placés dans la corbeille fullText contains 'important' and trashed = true
Fichiers contenant le mot "hello" fullText contains 'hello'
Fichiers ne contenant pas le mot "hello" not fullText contains 'hello'
Fichiers contenant l'expression exacte "hello world" fullText contains '"hello world"'
Fichiers avec une requête contenant le caractère "\" (par exemple, "\auteurs") fullText contains '\\authors'
Fichiers avec une pièce d'identité dans une collection, par exemple parents collection '1234567' in parents
Fichiers d'une collection dans un dossier de données d'application 'appDataFolder' in parents
Fichiers pour lesquels l'utilisateur "test@example.org" dispose d'une autorisation en écriture 'test@example.org' in writers
Fichiers pour lesquels les membres du groupe "group@example.org" disposent d'une autorisation en écriture 'group@example.org' in writers
Fichiers modifiés après une date donnée modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
Fichiers partagés avec l'utilisateur autorisé, dont le nom contient "hello" sharedWithMe and name contains 'hello'
Fichiers qui n'ont pas été partagés avec qui que ce soit ou avec des domaines (uniquement privés, ou partagés avec des utilisateurs ou des groupes spécifiques) visibility = 'limited'
Fichiers image ou vidéo modifiés après une date spécifique modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

Rechercher des fichiers avec une propriété de fichier personnalisée

Pour rechercher des fichiers avec une propriété de fichier personnalisée, utilisez le terme de requête de recherche appProperties avec une clé et une valeur. Par exemple, pour rechercher une propriété de fichier personnalisée nommée additionalID avec la valeur 8e8aceg2af2ge72e78:

appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }

Pour en savoir plus sur les propriétés des fichiers personnalisés, consultez Ajouter des propriétés de fichiers personnalisées.

Rechercher des fichiers avec une étiquette ou une valeur de champ spécifique

Pour rechercher des fichiers avec des étiquettes spécifiques, utilisez le terme de requête de recherche labels avec un ID de libellé spécifique. Par exemple : 'labels/LABEL_ID' in labels

Pour rechercher des fichiers sans ID de libellé spécifique: Not 'labels/LABEL_ID' in labels

Vous pouvez également rechercher des fichiers en fonction de valeurs de champ spécifiques. Par exemple, pour rechercher des fichiers avec une valeur textuelle : labels/LABEL_ID.text_field_id = 'TEXT'

Pour en savoir plus, consultez Rechercher des fichiers avec un libellé ou une valeur de champ spécifique.

Rechercher les corpus

Les recherches qui appellent files.list utilisent le corps user par défaut. Pour rechercher d'autres corpus, tels que les fichiers partagés avec un domaineGoogle Workspace , utilisez le paramètre corpora.

Plusieurs corpus peuvent être recherchés dans une seule requête, mais des résultats incomplets peuvent être renvoyés si le corpus combiné est trop volumineux. Si le résultat de incompleteSearch est true, tous les documents n'ont pas été renvoyés.