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 |
Esempi di ricerche:
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 parametrofields
per indicare che vuoi chelabelInfo
venga restituito inincludeLabels
.
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.