Dateien und Ordner suchen

Mit der Methode files.list können Sie alle oder nur einige Dateien und Ordner eines Drive-Nutzers zurückgeben.

Sie können auch die Methode files.list verwenden, um den fileId abzurufen, der für einige Ressourcenmethoden erforderlich ist, z. B. files.get und files.update.

Nach allen Dateien und Ordnern im Ordner „Meine Ablage“ des aktuellen Nutzers suchen

Verwenden Sie files.list ohne Parameter, um alle Dateien und Ordner zurückzugeben.

In „Meine Ablage“ des aktuellen Nutzers nach bestimmten Dateien oder Ordnern suchen

Wenn Sie nach einem bestimmten Satz von Dateien oder Ordnern suchen möchten, verwenden Sie das Feld des Abfragestrings q mit files.list. Damit können Sie die zurückzugebenden Dateien durch Kombinieren eines oder mehrerer Suchbegriffe filtern.

Ein Abfragestring besteht aus drei Teilen:

query_term operator values

Wobei:

  • query_term ist der Suchbegriff oder das Feld, nach dem gesucht werden soll. Informationen zu den Suchbegriffen, die zum Filtern geteilter Ablagen verwendet werden können, finden Sie unter Suchbegriffe und Operatoren.

  • operator gibt die Bedingung für den Suchbegriff an. Informationen zu den Operatoren, die Sie für die einzelnen Abfragebegriffe verwenden können, finden Sie unter Abfrageoperatoren.

  • values sind die spezifischen Werte, die Sie zum Filtern Ihrer Suchergebnisse verwenden möchten.

Der folgende Abfragestring filtert beispielsweise die Suche so, dass nur Ordner zurückgegeben werden:

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

Das folgende Beispiel zeigt, wie Sie mit einer Clientbibliothek Suchergebnisse nach Dateinamen und IDs von JPEG-Dateien filtern. In diesem Beispiel wird der Abfragebegriff mimeType verwendet, um die Ergebnisse auf Dateien vom Typ image/jpeg einzugrenzen. In diesem Beispiel wird spaces auf drive gesetzt, um die Suche auf den Drive-Bereich einzugrenzen. Wenn nextPageToken null zurückgibt, sind keine weiteren Ergebnisse vorhanden.

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

Wenn Sie die Suche auf Ordner beschränken möchten, verwenden Sie den Abfragestring, um den MIME-Typ auf q: mimeType = 'application/vnd.google-apps.folder' festzulegen

Weitere Informationen zu MIME-Typen finden Sie unter Von Google Workspace und Google Drive unterstützte MIME-Typen.

Beispiele für Abfragestrings

Diese Tabelle enthält einige einfache Abfragestrings. Der tatsächliche Code unterscheidet sich je nach der Clientbibliothek, die Sie für die Suche verwenden.

Abfrageelemente Beispiel
Dateien mit dem Namen „hello“ name = 'hello'
Dateien, deren Name die Wörter „Hallo“ und „Auf Wiedersehen“ enthält name contains 'hello' and name contains 'goodbye'
Dateien, deren Name das Wort „hello“ nicht enthält not name contains 'hello'
Ordner, die Google-Apps sind oder den MIME-Typ für den Ordner haben mimeType = 'application/vnd.google-apps.folder'
Dateien, die keine Ordner sind mimeType != 'application/vnd.google-apps.folder'
Dateien, die den Text „Wichtig“ enthalten und sich im Papierkorb befinden fullText contains 'important' and trashed = true
Dateien, die das Wort „hello“ enthalten fullText contains 'hello'
Dateien, die das Wort „Hallo“ nicht enthalten not fullText contains 'hello'
Dateien, die die genaue Wortgruppe „Hallo Welt“ enthalten fullText contains '"hello world"'
Dateien mit einer Abfrage, die das Zeichen „\“ enthält (z.B. "\authors") fullText contains '\\authors'
Dateien mit ID innerhalb einer Sammlung, z.B. parents-Sammlung '1234567' in parents
Dateien in einem Ordner für Anwendungsdaten in einer Sammlung 'appDataFolder' in parents
Dateien, für die der Nutzer „test@beispiel.org“ Schreibberechtigung hat 'test@example.org' in writers
Dateien, für die Mitglieder der Gruppe „gruppe@beispiel.de“ Schreibberechtigung haben 'group@example.org' in writers
Dateien, die nach einem bestimmten Datum geändert wurden modifiedTime > '2012-06-04T12:00:00' // default time zone is UTC
Dateien, die für den autorisierten Nutzer mit „hello“ im Namen freigegeben wurden sharedWithMe and name contains 'hello'
Dateien, die für niemanden oder Domains freigegeben wurden (nur privat oder für bestimmte Nutzer oder Gruppen freigegeben) visibility = 'limited'
Bild- oder Videodateien, die nach einem bestimmten Datum geändert wurden modifiedTime > '2012-06-04T12:00:00' and (mimeType contains 'image/' or mimeType contains 'video/')

Nach Dateien mit einer benutzerdefinierten Dateieigenschaft suchen

Verwenden Sie den Suchbegriff appProperties mit einem Schlüssel und Wert, um nach Dateien mit einem benutzerdefinierten Dateiattribut zu suchen. So suchen Sie beispielsweise nach einem benutzerdefinierten Dateiattribut namens additionalID mit dem Wert 8e8aceg2af2ge72e78:

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

Weitere Informationen zu benutzerdefinierten Dateieigenschaften finden Sie unter Benutzerdefinierte Dateieigenschaften hinzufügen.

Nach Dateien mit einem bestimmten Label oder Feldwert suchen

Wenn Sie nach Dateien mit bestimmten Labels suchen möchten, verwenden Sie den Suchbegriff labels mit einer bestimmten Label-ID. Beispiel: 'labels/LABEL_ID' in labels

So suchen Sie nach Dateien ohne bestimmte Label-ID: Not 'labels/LABEL_ID' in labels

Sie können auch anhand bestimmter Feldwerte nach Dateien suchen. So suchen Sie beispielsweise nach Dateien mit einem Textwert: labels/LABEL_ID.text_field_id = 'TEXT'

Weitere Informationen finden Sie unter Nach Dateien mit einem bestimmten Label oder Feldwert suchen.

In Korpora suchen

Bei Suchen, die files.list aufrufen, wird standardmäßig der user-Korpus verwendet. Verwenden Sie den Parameter corpora, um in anderen Korpora zu suchen, z. B. Dateien, die für eineGoogle Workspace -Domain freigegeben wurden.

In einer einzigen Abfrage können mehrere Korpora durchsucht werden. Wenn der kombinierte Korpus zu groß ist, können jedoch unvollständige Ergebnisse zurückgegeben werden. Wenn das incompleteSearch-Ergebnis true ist, wurden nicht alle Dokumente zurückgegeben.