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

In questa pagina viene descritto come cercare i file con un'etichetta o un valore di campo specifico applicato.

Tipi di campi delle etichette

I campi delle etichette di Google Drive sono digitati in modo forte e ogni tipo supporta una semantica di indicizzazione e ricerca diversa. 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
Integer 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. Effettua una ricerca basata sulla 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 per i quali un campo specifico è (o non è) impostato:

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

2. Effettua una ricerca basata su campi a un singolo valore

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

Su cosa vuoi eseguire la query Stringa di query
Elementi in cui il commento è impostato su "hello" labels/contract.comment = 'hello'
File in cui il commento inizia con "hello" 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 la data di esecuzione è 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. Cerca in base a campi con campi a 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 di 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 entro includeLabels.

In caso di esito positivo, il corpo della risposta contiene l'elenco di 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.