Pesquisar arquivos e pastas

Use o método files.list para retornar todos ou apenas alguns arquivos e pastas de um usuário do Drive.

Também é possível usar o método files.list para recuperar o fileId necessário para alguns métodos de recursos, como files.get e files.update.

Pesquisar todos os arquivos e pastas no Meu Drive do usuário atual

Use files.list sem parâmetros para retornar todos os arquivos e pastas.

Pesquisar pastas ou arquivos específicos no Meu Drive do usuário atual

Para pesquisar um conjunto específico de arquivos ou pastas, use o campo q da string de consulta com files.list para filtrar os arquivos retornados combinando um ou mais termos de pesquisa.

Uma string de consulta contém estas três partes:

query_term operator values

Em que:

  • query_term é o termo ou campo de consulta a ser pesquisado. Confira os termos de consulta que podem ser usados para filtrar drives compartilhados em Termos e operadores de consulta de pesquisa.

  • operator especifica a condição do termo de consulta. Para saber quais operadores podem ser usados com cada termo de consulta, acesse Operadores de consulta.

  • values são os valores específicos que você quer usar para filtrar os resultados da pesquisa.

Por exemplo, a string de consulta a seguir filtra a pesquisa para retornar apenas pastas:

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

O exemplo a seguir mostra como usar uma biblioteca de cliente para filtrar os resultados da pesquisa por nomes e IDs de arquivos JPEG. Neste exemplo, usamos o termo de consulta mimeType para restringir os resultados aos arquivos do tipo image/jpeg. Este exemplo também define spaces como drive para restringir ainda mais a pesquisa ao espaço do Drive. Quando nextPageToken retornar null, não há mais resultados.

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;
    }
}

Para restringir a pesquisa a pastas, use a string de consulta para definir o tipo MIME como q: mimeType = 'application/vnd.google-apps.folder'.

Para mais informações sobre os tipos MIME, consulte Tipos MIME compatíveis com o Google Workspace e o Google Drive.

Exemplos de string de consulta

Esta tabela mostra algumas strings básicas de consulta. O código real difere dependendo da biblioteca de cliente usada na pesquisa.

O que você quer consultar Exemplo
Arquivos com o nome "hello" name = 'hello'
Arquivos com as palavras "hello" e "goodbye" name contains 'hello' and name contains 'goodbye'
Arquivos com um nome que não contém a palavra "hello" not name contains 'hello'
Pastas que são apps do Google ou têm o tipo MIME da pasta mimeType = 'application/vnd.google-apps.folder'
Arquivos que não são pastas mimeType != 'application/vnd.google-apps.folder'
Arquivos que contêm o texto "importante" e que estão na lixeira fullText contains 'important' and trashed = true
Arquivos com a palavra "hello" fullText contains 'hello'
Arquivos que não têm a palavra "hello" not fullText contains 'hello'
Arquivos que contêm a frase exata "hello world" fullText contains '"hello world"'
Arquivos com uma consulta que contenha o caractere "\" (por exemplo, "\authors") fullText contains '\\authors'
Arquivos com ID em uma coleção, por exemplo, a coleção parents '1234567' in parents
Arquivos em uma pasta de dados do aplicativo em uma coleção 'appDataFolder' in parents
Arquivos para os quais o usuário "test@example.org" tem permissão de gravação 'test@example.org' in writers
Arquivos em que os participantes do grupo "group@example.org" têm permissão de gravação 'group@example.org' in writers
Arquivos modificados após uma determinada data modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
Arquivos compartilhados com o usuário autorizado com "hello" no nome sharedWithMe and name contains 'hello'
Arquivos que não foram compartilhados com ninguém ou com domínios (apenas particulares ou compartilhados com usuários ou grupos específicos) visibility = 'limited'
Arquivos de imagem ou vídeo modificados após uma data específica modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

Pesquisar arquivos com uma propriedade de arquivo personalizada

Para pesquisar arquivos com uma propriedade de arquivo personalizada, use o termo de consulta de pesquisa appProperties com uma chave e um valor. Por exemplo, para pesquisar uma propriedade de arquivo personalizada chamada additionalID com um valor de 8e8aceg2af2ge72e78:

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

Para mais informações sobre propriedades de arquivo personalizadas, consulte Adicionar propriedades de arquivo personalizadas.

Pesquisar arquivos com um marcador ou valor de campo específico

Para pesquisar arquivos com rótulos específicos, use o termo da consulta de pesquisa labels com um ID de rótulo específico. Por exemplo: 'labels/LABEL_ID' in labels

Para pesquisar arquivos sem um ID de marcador específico: Not 'labels/LABEL_ID' in labels

Também é possível pesquisar arquivos com base em valores de campos específicos. Por exemplo, para pesquisar arquivos com um valor de texto: labels/LABEL_ID.text_field_id = 'TEXT'

Para mais informações, consulte Pesquisar arquivos com um marcador ou valor de campo específico.

Pesquisar nos corpora

As pesquisas que chamam files.list usam o corpus user por padrão. Para pesquisar outros corpora, como arquivos compartilhados com um domínioGoogle Workspace , use o parâmetro corpora.

Vários corpora podem ser pesquisados em uma única consulta, embora resultados incompletos possam ser retornados se o corpus combinado for muito grande. Se o resultado de incompleteSearch for true, nem todos os documentos foram retornados.