Nach Dateien und Ordnern suchen

Die Google Drive API unterstützt mehrere Möglichkeiten zum Suchen nach Dateien und Ordnern.

Mit der Methode files.list können Sie alle oder einige der Dateien und Ordner eines Drive-Nutzers. Das files.list kann auch verwendet werden, um die fileId abzurufen, die für eine Ressource erforderlich sind. (z. B. files.get und files.update).

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

Verwenden Sie die Methode files.list ohne Parameter, um alle Dateien und Ordner.

GET https://www.googleapis.com/drive/v3/files

Nach bestimmten Dateien oder Ordnern in „Meine Ablage“ des aktuellen Nutzers suchen

Wenn Sie nach einer bestimmten Gruppe von Dateien oder Ordnern suchen möchten, verwenden Sie den Abfragestring im Feld q mit der Methode files.list zum Filtern der durch Kombinieren von Suchbegriffen gefundene Dateien.

Ein Abfragestring besteht aus drei Teilen:

query_term operator values

Wobei:

  • query_term ist der Suchbegriff oder das Feld, nach dem gesucht werden soll.

  • operator gibt die Bedingung für den Suchbegriff an.

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

Um die Suchbegriffe und Operatoren anzuzeigen, die Sie mit Filterdateien und -ordnern verwenden können, Siehe Suchbegriffe und Operatoren

Beispielsweise filtert der folgende Abfragestring die Suche so, dass nur Ordner durch Festlegen des MIME-Typs:

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

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

Beispiele für Abfragestrings

Die folgende Tabelle enthält Beispiele für einige grundlegende Abfragestrings. Der eigentliche Code variiert je nach Clientbibliothek, die Sie für die Suche verwenden.

Sie müssen auch Sonderzeichen in Ihren Dateinamen mit Escapezeichen versehen, um sicherzustellen, wie die Abfrage funktioniert. Wenn z. B. ein Dateiname sowohl einen Apostroph enthält, (') und eines umgekehrten Schrägstrichs ("\") müssen Sie einen umgekehrten Schrägstrich als Escapezeichen verwenden: name contains 'quinn\'s paper\\essay'.

Was Sie abfragen möchten Beispiel
Dateien mit dem Namen „hello“ name = 'hello'
Dateien mit einem Namen, der die Wörter „Hallo“ enthält und auf Wiedersehen. name contains 'hello' and name contains 'goodbye'
Dateien mit einem Namen, der nicht das Wort „Hallo“ enthält not name contains 'hello'
Dateien, die den Text „wichtig“ enthalten und im Papierkorb fullText contains 'important' and trashed = true
Dateien, die das Wort „hello“ enthalten fullText contains 'hello'
Dateien, die nicht das Wort „Hallo“ enthalten not fullText contains 'hello'
Dateien, die genau das Wort „Hallo Welt“ enthalten fullText contains '"hello world"'
Dateien mit einer Abfrage, die „\“ enthält Zeichen (z. B. "\authors") fullText contains '\\authors'
Dateien, die Ordner sind mimeType = 'application/vnd.google-apps.folder'
Dateien, die keine Ordner sind mimeType != 'application/vnd.google-apps.folder'
Dateien, die nach einem bestimmten Datum geändert wurden (Standardzeitzone ist UTC) modifiedTime > '2012-06-04T12:00:00'
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/')
Markierte Dateien starred = true
Dateien in einer Sammlung (z. B. die Ordner-ID in der Sammlung parents) '1234567' in parents
Dateien in einem Ordner mit Anwendungsdaten in einer Sammlung 'appDataFolder' in parents
Dateien für den Nutzer „test@beispiel.org“ ist der Eigentümer 'test@example.org' in owners
Dateien für den Nutzer „test@beispiel.org“ hat Schreibberechtigung 'test@example.org' in writers
Dateien für Mitglieder der Gruppe „gruppe@beispiel.de“ haben Schreibberechtigung 'group@example.org' in writers
Dateien, die für den autorisierten Nutzer mit „hello“ freigegeben wurden im Namen sharedWithMe and name contains 'hello'
Dateien mit einer benutzerdefinierten Dateieigenschaft, die für alle Apps sichtbar ist properties has { key='mass' and value='1.3kg' }
Dateien mit einer benutzerdefinierten Dateieigenschaft, die nur für die anfragende App freigegeben ist appProperties has { key='additionalID' and value='8e8aceg2af2ge72e78' }
Dateien, die für niemanden oder Domains freigegeben wurden (nur privat oder für bestimmte Nutzer oder Gruppen freigegeben) visibility = 'limited'

Suchergebnisse mit einer Clientbibliothek filtern

Im folgenden Codebeispiel wird gezeigt, wie Sie die Suche mithilfe einer Clientbibliothek filtern. die Ergebnisse für Dateinamen und IDs von JPEG-Dateien. In diesem Beispiel wird die Methode mimeType verwendet. Suchbegriff, um die Ergebnisse auf Dateien des Typs image/jpeg einzugrenzen. Außerdem wird festgelegt, spaces auf drive, um die Suche weiter auf das Drive-Element einzugrenzen Gruppenbereich. Wenn nextPageToken null zurückgibt, es gibt keine weiteren Ergebnisse.

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

Nach Dateien mit einer benutzerdefinierten Dateieigenschaft suchen

Um nach Dateien mit einem benutzerdefinierten Dateiattribut zu suchen, verwenden Sie entweder die properties oder den appProperties-Suchbegriff mit einem Schlüssel und einem Wert. Zum Beispiel Suchen Sie nach einer benutzerdefinierten Dateieigenschaft, die für die anfragende App namens additionalID mit dem Wert 8e8aceg2af2ge72e78:

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

Weitere Informationen finden Sie unter Benutzerdefinierte Datei hinzufügen Eigenschaften.

Nach Dateien mit einem bestimmten Label oder Feldwert suchen

Um nach Dateien mit bestimmten Labels zu suchen, verwenden Sie den Suchbegriff labels mit einer bestimmten Label-ID. Beispiel: 'labels/LABEL_ID' in labels Wenn der Vorgang erfolgreich ist, enthält der Antworttext alle Dateiinstanzen, bei denen der angewendet wird.

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

Sie können auch basierend auf bestimmten Feldwerten nach Dateien suchen. Zum Beispiel Suche nach Dateien mit einem Textwert: labels/LABEL_ID.text_field_id ='TEXT'

Weitere Informationen finden Sie unter Dateien mit einem bestimmten Label oder Feld suchen Wert:

Korpora suchen

Bei Suchanfragen, die files.list aufrufen, wird der Standardmäßig corpora von user. Suchen anderen Korpora (z. B. für domain freigegebene Dateien) die corpora .

In einer einzelnen Suchanfrage können mehrere Korpora durchsucht werden, obwohl die Ergebnisse unvollständig sind. zurückgegeben, wenn der kombinierte Korpora zu groß ist. Wenn incompleteSearch gleich true im Antworttext eingeben, wurden nicht alle Dokumente zurückgegeben. Wenn dieses finden, sollten Sie Ihre Abfrage eingrenzen, indem Sie andere Korpora auswählen, user oder drive.