Nach Dateien mit einem bestimmten Label oder Feldwert suchen

Auf dieser Seite wird beschrieben, wie Sie nach Dateien suchen, auf die ein bestimmtes Label oder ein bestimmter Feldwert angewendet wurde.

Label-Feldtypen

Google Drive-Labelfelder sind stark typisiert. Jeder Typ unterstützt unterschiedliche Indexierungs- und Suchsemantiken. In der folgenden Tabelle sind die verfügbaren Datentypen aufgeführt.

Typ Optionen für Labeltypen Unterstützte Suchoperatoren
Text TextOptions is null, is not null, =, contains, starts with
Ganzzahl IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Datum DateOptions is null, is not null, =, !=, <, >, <=, >=
Auswahl SelectionOptions is null, is not null, =, !=
Nutzer UserOptions is null, is not null, =, !=
Auswahlliste SelectionOptions (mit max_entries > 1) is null, is not null, in, not in
Nutzerliste UserOptions (mit max_entries > 1) is null, is not null, in, not in

1. Suche basierend auf dem Vorhandensein eines Labels oder Felds

Sie können nach Elementen suchen, auf die ein bestimmtes Label angewendet wurde (oder nicht):

  • 'labels/contract' in labels
  • not 'labels/contract' in labels

Sie können auch nach Elementen suchen, bei denen ein bestimmtes Feld festgelegt wurde (oder nicht):

  • labels/contract.comment IS NOT NULL
  • labels/contract.comment IS NULL

2. Suche basierend auf Feldern mit einem einzelnen Wert

Sie können Suchanfragen schreiben, die mit erwarteten Feldwerten übereinstimmen. In der folgenden Tabelle sind die gültigen Feldabfragen aufgeführt:

Was Sie abfragen möchten Abfragestring
Elemente, bei denen der Kommentar auf „Hallo“ gesetzt ist labels/contract.comment = 'hello'
Dateien, bei denen der Kommentar mit „Hallo“ beginnt labels/contract.comment STARTS WITH 'hello'
Dateien, bei denen der Status „ausgeführt“ ist labels/contract.status = 'executed'
Dateien, bei denen der Status nicht „ausgeführt“ ist labels/contract.status != 'executed'
Dateien, bei denen das Ausführungsdatum vor einem bestimmten Datum liegt labels/contract.execution_date < '2020-06-22'
Dateien, bei denen der Wert in USD (Ganzzahl) unter einem bestimmten Wert liegt labels/contract.value_usd < 2000
Dateien, bei denen der Kundenkontakt auf eine bestimmte E-Mail-Adresse gesetzt ist labels/contract.client_contact = 'alex@altostrat.com'

3. Suche basierend auf Feldern mit mehreren Werten (z. B. ListOptions.max_entries > 1)

Felder, die mehrere Werte unterstützen, können nur mit dem Operator IN abgefragt werden:

  • 'EMAIL_ADDRESS' IN labels/project.project_leads
  • NOT 'EMAIL_ADDRESS' IN labels/project.project_leads

Beispiel

Das folgende Codebeispiel zeigt, wie Sie mit einer oder mehreren labelId alle Dateien mit einem bestimmten Label oder Feldwert aus einer Drive-Datei Ressource auflisten. Außerdem wird die files.list Methode verwendet. Der Anfragetext muss leer sein.

Wenn Sie labelInfo in die Antwort einbeziehen möchten, müssen Sie außerdem Folgendes angeben:

  • includeLabels als durch Kommas getrennte Liste von IDs.

  • labelInfo im Parameter fields, um anzugeben, dass Sie die labelInfo in includeLabels zurückgeben möchten.

Bei Erfolg enthält der Antwort text die Liste der Dateien.

Java

List<File> fileList = driveService.files().list().setIncludeLabels("LABEL_1_ID,LABEL_2_ID").setFields("items(labelInfo, id)").setQ("'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels").execute().getItems();

Python

file_list = drive_service.files().list(includeLabels="LABEL_1_ID,LABEL_2_ID", q="'labels/LABEL_1_ID' in labels and 'labels/LABEL_2_ID' in labels", fields="items(labelInfo, id)").execute();

Node.js

/**
* Search for Drive files with specific labels
* @return{obj} file list with labelInfo
**/
async function searchForFileWithLabels() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  try {
    const fileList = await service.files.list({
      includeLabels: 'LABEL_1_ID,LABEL_2_ID',
      q: '\'labels/LABEL_1_ID\' in labels and \'labels/LABEL_2_ID\' in labels',
      fields:'files(labelInfo, id)',
    });
    return file;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }

Ersetzen Sie Folgendes:

  • LABEL_1_ID: Die erste labelId eines zurückzugebenden Labels.
  • LABEL_2_ID: Die zweite labelId eines zurückzugebenden Labels.