Cette page explique comment rechercher des fichiers auxquels un libellé ou une valeur de champ spécifique a été appliqué.
Types de champ de libellé
Les champs de libellé Google Drive sont fortement typés, chaque type étant compatible avec des sémantiques d'indexation et de recherche différentes. Le tableau suivant présente les types de données disponibles.
| Type | Options de type de libellé | Opérateurs de recherche compatibles |
|---|---|---|
| Texte | TextOptions | is null, is not null, =, contains, starts with |
| Nombre 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élections | SelectionOptions (avec max_entries > 1) | is null, is not null, in, not in |
| Liste d'utilisateurs | UserOptions (avec max_entries > 1) | is null, is not null, in, not in |
Exemples de recherches
1. Rechercher en fonction de la présence d'un libellé ou d'un champ
Vous pouvez rechercher des éléments auxquels un libellé spécifique a été appliqué (ou non) :
'labels/contract' in labelsnot 'labels/contract' in labels
Vous pouvez également rechercher des éléments pour lesquels un champ spécifique a été défini (ou non) :
labels/contract.comment IS NOT NULLlabels/contract.comment IS NULL
2. Rechercher en fonction de champs à valeur unique
Vous pouvez écrire des requêtes de recherche pour qu'elles correspondent aux valeurs de champ attendues. Le tableau suivant présente les requêtes de champ valides :
| Critère de recherche | Chaîne de requête |
|---|---|
| Éléments pour lesquels le commentaire est défini sur "hello" | labels/contract.comment = 'hello' |
| Fichiers pour lesquels le commentaire commence par "hello" | labels/contract.comment STARTS WITH 'hello' |
| Fichiers pour lesquels l'état est "executed" | labels/contract.status = 'executed' |
| Fichiers pour lesquels l'état n'est pas "executed" | labels/contract.status != 'executed' |
| Fichiers pour lesquels la date d'exécution est antérieure à une date spécifique | labels/contract.execution_date < '2020-06-22' |
| Fichiers pour lesquels la valeur en USD (entier) est inférieure à une valeur spécifique | labels/contract.value_usd < 2000 |
| Fichiers pour lesquels le contact client est défini sur une adresse e-mail spécifique | labels/contract.client_contact = 'alex@altostrat.com' |
3. Rechercher en fonction de champs à valeurs multiples (par exemple, 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_leadsNOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Exemple
L'exemple de code suivant montre comment utiliser un ou plusieurs labelId pour lister tous les
fichiers avec un libellé ou une valeur de champ spécifique à partir d'une ressource de fichier Drive file
resource. Il utilise également la
files.list méthode. Le corps de la requête doit être vide.
Si vous souhaitez inclure labelInfo dans la réponse, vous devez également spécifier les éléments suivants :
includeLabelssous forme de liste d'ID séparés par une virgule.labelInfodans le paramètrefieldspour indiquer que vous souhaitez quelabelInfosoit renvoyé dansincludeLabels.
Si la requête aboutit, le corps de la réponse contient la liste des 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
labelIdd'un libellé à renvoyer. - LABEL_2_ID : deuxième
labelIdd'un libellé à renvoyer.