Cercare file e cartelle

Utilizza il metodo files.list per restituire tutti o solo alcuni file e cartelle di un utente di Drive.

Puoi anche utilizzare il metodo files.list per recuperare il valore fileId richiesto per alcuni metodi delle risorse, ad esempio files.get e files.update.

Cerca tutti i file e le cartelle nella cartella Il mio Drive dell'utente corrente

Utilizza l'elemento files.list senza parametri per restituire tutti i file e le cartelle.

Cercare cartelle o file specifici nella pagina Il mio Drive dell'utente corrente

Per cercare un insieme specifico di file o cartelle, utilizza il campo q della stringa di query con files.list per filtrare i file da restituire combinando uno o più termini di ricerca.

Una stringa di query contiene le seguenti tre parti:

query_term operator values

Dove:

  • query_term è il termine o il campo di query in base al quale eseguire la ricerca. Per visualizzare i termini di query che possono essere utilizzati per filtrare i Drive condivisi, consulta Termini e operatori delle query di ricerca.

  • operator specifica la condizione del termine di query. Per visualizzare gli operatori che puoi utilizzare con ciascun termine di query, consulta la sezione Operatori di query.

  • values sono i valori specifici che vuoi utilizzare per filtrare i risultati di ricerca.

Ad esempio, la seguente stringa di query filtra la ricerca in modo che restituisca solo le cartelle:

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

L'esempio seguente mostra come utilizzare una libreria client per filtrare i risultati di ricerca in base ai nomi dei file e agli ID di file JPEG. In questo esempio viene utilizzato il termine di query mimeType per limitare i risultati ai file di tipo image/jpeg. Questo esempio imposta anche spaces su drive per restringere ulteriormente la ricerca allo spazio di Drive. Quando nextPageToken restituisce null, non ci sono altri risultati.

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

Per limitare la ricerca alle cartelle, utilizza la stringa di query per impostare il tipo MIME su q: mimeType = 'application/vnd.google-apps.folder'

Per saperne di più sui tipi MIME, vedi Tipi MIME supportati per Google Workspace e Google Drive.

Esempi di stringhe di query

Questa tabella mostra alcune stringhe di query di base. Il codice effettivo varia a seconda della libreria client utilizzata per la ricerca.

Oggetto della query Esempio
File con il nome "ciao" name = 'hello'
File il cui nome contiene le parole "ciao" e "arrivederci" name contains 'hello' and name contains 'goodbye'
I file il cui nome non contiene la parola "ciao" not name contains 'hello'
Cartelle che sono app Google o che hanno il tipo MIME cartella mimeType = 'application/vnd.google-apps.folder'
File che non sono cartelle mimeType != 'application/vnd.google-apps.folder'
I file che contengono il testo "importante" e che si trovano nel cestino fullText contains 'important' and trashed = true
File che contengono la parola "ciao" fullText contains 'hello'
I file che non contengono la parola "ciao" not fullText contains 'hello'
File che contengono la frase esatta "ciao mondo" fullText contains '"hello world"'
I file con una query contenente il carattere "\" (ad es. "\authors") fullText contains '\\authors'
File con ID all'interno di una raccolta, ad esempio una raccolta parents '1234567' in parents
File presenti in una cartella di dati delle applicazioni in una raccolta 'appDataFolder' in parents
File per cui l'utente "test@example.org" dispone dell'autorizzazione di scrittura 'test@example.org' in writers
File per i quali i membri del gruppo "gruppo@example.org" dispongono dell'autorizzazione di scrittura 'group@example.org' in writers
File modificati dopo una determinata data modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
File condivisi con l'utente autorizzato che contengono "hello" nel nome sharedWithMe and name contains 'hello'
File che non sono stati condivisi con nessuno o con domini (solo privati o condivisi con utenti o gruppi specifici) visibility = 'limited'
File immagine o video modificati dopo una data specifica modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

Cercare file con una proprietà di file personalizzata

Per cercare file con una proprietà personalizzata, utilizza il termine della query di ricerca appProperties con una chiave e un valore. Ad esempio, per cercare una proprietà file personalizzata chiamata additionalID con un valore pari a 8e8aceg2af2ge72e78:

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

Per ulteriori informazioni sulle proprietà dei file personalizzati, consulta Aggiungere proprietà dei file personalizzati.

Cercare file con un'etichetta o un valore di campo specifico

Per cercare file con etichette specifiche, utilizza il termine della query di ricerca labels con un ID etichetta specifico. Ad esempio: 'labels/LABEL_ID' in labels

Per cercare file senza un ID etichetta specifico: Not 'labels/LABEL_ID' in labels

Puoi anche cercare i file in base a valori specifici dei campi. Ad esempio, per cercare file con un valore di testo: labels/LABEL_ID.text_field_id = 'TEXT'

Per ulteriori informazioni, consulta Cercare file con un'etichetta o un valore di campo specifici.

Cerca nei corpora

Le ricerche che chiamano files.list utilizzano il corpus di user per impostazione predefinita. Per cercare altri corpora, ad esempio file condivisi con un dominioGoogle Workspace , utilizza il parametro corpora.

È possibile cercare più corpora in una singola query, anche se potrebbero essere restituiti risultati incompleti se il corpus combinato è troppo grande. Se il risultato di incompleteSearch è true, non sono stati restituiti tutti i documenti.