Cette page explique comment rechercher des fichiers avec un libellé ou une valeur de champ spécifique. appliquée.
Types de champs de libellé
Les champs de libellé Google Drive sont très typés, et chacun d'eux est compatible une indexation et une sémantique de recherche différentes. Le tableau suivant présente les types de données.
Type | Options de type d'étiquette | Opérateurs de recherche compatibles |
---|---|---|
Texte | TextOptions | is null, is not null, =, contains, starts with |
Texte long | LongTextOptions | is null, is not null, contains |
Entier | IntegerOptions | is null, is not null, =, !=, <, >, <=, >= |
Date | DateOptions | is null, is not null, =, !=, <, >, <=, >= |
Sélection | SelectionOptions | is null, is not null, =, != |
Utilisateur | UserOptions | is null, is not null, =, != |
Liste de sélection | SelectionOptions (avec max_inputs > 1) | is null, is not null, in, not in |
Liste d'utilisateurs | UserOptions (avec max_inputs > 1) | is null, is not null, in, not in |
Exemples de recherches
1. Effectuer une recherche basée sur la présence d'un libellé ou d'un champ
Vous pouvez rechercher les éléments auxquels un libellé spécifique a été (ou n'a pas) été appliqué:
'labels/contract' in labels
not 'labels/contract' in labels
Vous pouvez également rechercher des éléments pour lesquels un champ spécifique a (ou n'a pas) été défini:
labels/contract.comment IS NOT NULL
labels/contract.comment IS NULL
2. Recherche basée sur des champs à valeur unique
Vous pouvez rédiger des requêtes de recherche qui correspondent aux valeurs de champ attendues. Le tableau suivant affiche les requêtes de champs valides:
Ce que vous souhaitez interroger | Chaîne de requête |
---|---|
Éléments pour lesquels le commentaire est défini sur "hello" | labels/contract.comment = 'hello' |
Fichiers dont le commentaire commence par "hello" | labels/contract.comment STARTS WITH 'hello' |
Fichiers dans lesquels l'état est exécuté | labels/contract.status = 'executed' |
Fichiers dont l'état n'est pas exécuté | labels/contract.status != 'executed' |
Fichiers dont la date d'exécution est antérieure à une date spécifique | labels/contract.execution_date < '2020-06-22' |
Fichiers où "value_usd" (entier) est inférieur à une valeur spécifique | labels/contract.value_usd < 2000 |
Fichiers où client_contact est défini sur une adresse e-mail spécifique | labels/contract.client_contact = 'alex@altostrat.com' |
3. Effectuez une recherche sur la base de champs comportant plusieurs valeurs (comme ListOptions.max_entries > 1).
Les champs qui acceptent plusieurs valeurs ne peuvent être interrogés qu'à l'aide de l'opérateur IN:
'EMAIL_ADDRESS' IN labels/project.project_leads
NOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Exemple
L'exemple de code suivant montre comment utiliser un ou plusieurs labelId
pour répertorier tous
Fichiers associés à un libellé ou à une valeur de champ spécifique provenant d'un fichier Drive
ressource. Elle utilise également le
files.list
. Le corps de la requête doit
être vide.
Si vous souhaitez inclure labelInfo
dans la réponse, vous devez également spécifier:
includeLabels
sous forme de liste d'ID séparés par une virgule.labelInfo
dans le paramètrefields
pour indiquer que vous souhaitezlabelInfo
retourné sousincludeLabels
.
Si l'opération réussit, la réponse "body" contient la liste de fichiers.
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;
}
Remplacez les éléments suivants :
- LABEL_1_ID: premier(s)
labelId
d'un libellé à renvoyer. - LABEL_2_ID: deuxième
labelId
d'un libellé à renvoyer.