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

Questa pagina descrive come cercare file con un'etichetta o un valore di campo specifico applicato.

Tipi di campi delle etichette

I campi delle etichette di Google Drive sono fortemente tipiizzati e ogni tipo supporta diverse semantiche di indicizzazione e ricerca. La seguente tabella mostra i tipi di dati disponibili.

Tipo Opzioni per il tipo di etichetta Operatori di ricerca supportati
Testo TextOptions is null, is not null, =, contains, starts with
Testo lungo LongTextOptions is null, is not null, contains
Numero intero IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Data DateOptions is null, is not null, =, !=, <, >, <=, >=
Selezione SelectionOptions is null, is not null, =, !=
Utente UserOptions is null, is not null, =, !=
Elenco di selezione SelectionOptions (con max_entries > 1) is null, is not null, in, not in
Elenco utenti UserOptions (con max_entries > 1) is null, is not null, in, not in

1. Ricerca in base alla presenza di un'etichetta o di un campo

Puoi cercare gli elementi a cui è stata o meno applicata un'etichetta specifica:

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

Puoi anche cercare elementi in cui è stato impostato (o meno) un campo specifico:

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

2. Ricerca basata su campi con un solo valore

Puoi scrivere query di ricerca in modo che corrispondano ai valori di campo previsti. La tabella seguente mostra le query sui campi valide:

Che cosa vuoi eseguire una query Stringa di query
Elementi in cui il commento è impostato su "ciao" labels/contract.comment = 'hello'
File in cui il commento inizia con "ciao" labels/contract.comment STARTS WITH 'hello'
File in cui viene eseguito lo stato labels/contract.status = 'executed'
File in cui lo stato non viene eseguito labels/contract.status != 'executed'
File in cui execution_date è precedente a una data specifica labels/contract.execution_date < '2020-06-22'
File in cui value_usd (intero) è inferiore a un valore specifico labels/contract.value_usd < 2000
File in cui client_contact è impostato su un indirizzo email specifico labels/contract.client_contact = 'alex@altostrat.com'

3. Ricerca in base a campi con più valori (ad es. ListOptions.max_entries > 1)

È possibile eseguire query sui campi che supportano più valori solo utilizzando l'operatore IN:

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

Esempio

Il seguente esempio di codice mostra come utilizzare uno o più labelId per elencare tutti i file con un'etichetta o un valore di campo specifico da una risorsa file di Drive. Utilizza anche il metodo files.list. Il corpo della richiesta deve essere vuoto.

Se vuoi includere labelInfo nella risposta, devi anche specificare:

  • includeLabels come elenco di ID separati da virgole.

  • labelInfo nel parametro fields per indicare che vuoi che labelInfo venga restituito in includeLabels.

In caso di esito positivo, il corpo della risposta contiene l'elenco dei file.

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

Sostituisci quanto segue:

  • LABEL_1_ID: il primo labelId di un'etichetta da restituire.
  • LABEL_2_ID: il secondo labelId di un'etichetta da restituire.