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

In questa pagina viene descritto come cercare i file a cui è stata applicata un'etichetta o un valore di campo specifico.

Tipi di campi etichetta

I campi delle etichette di Google Drive sono tipicamente digitati e ogni tipo supporta una semantica di indicizzazione e ricerca diversa. La tabella seguente 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. Cerca in base alla presenza di un'etichetta o un campo

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

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

Puoi anche cercare gli elementi per i quali un campo specifico è stato impostato o meno:

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

2. Ricerca basata su campi a valore singolo

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

Oggetto della query Stringa di query
Elementi per cui il commento è impostato su "ciao" labels/contract.comment = 'hello'
File il cui commento inizia con "hello" labels/contract.comment STARTS WITH 'hello'
File su cui viene eseguito lo stato labels/contract.status = 'executed'
File con stato non eseguito labels/contract.status != 'executed'
File in cui destination_date è precedente a una data specifica labels/contract.execution_date < '2020-06-22'
File in cui value_usd (numero 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 basata su campi con campi a più valori (ad esempio 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 venga restituito labelInfo all'interno di 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: i primi labelId di un'etichetta da restituire.
  • LABEL_2_ID: il secondo labelId di un'etichetta da restituire.