En esta página, se describe cómo buscar archivos con una etiqueta o un valor de campo específicos aplicados.
Tipos de campos de etiqueta
Los campos de etiqueta de Google Drive tienen un tipo definido, y cada tipo admite diferentes semánticas de indexación y búsqueda. En la siguiente tabla, se muestran los tipos de datos disponibles.
| Tipo | Opciones de tipo de etiqueta | Operadores de búsqueda admitidos |
|---|---|---|
| Texto | TextOptions | is null, is not null, =, contains, starts with |
| Número entero | IntegerOptions | is null, is not null, =, !=, <, >, <=, >= |
| Fecha | DateOptions | is null, is not null, =, !=, <, >, <=, >= |
| Selección | SelectionOptions | is null, is not null, =, != |
| Usuario | UserOptions | is null, is not null, =, != |
| Lista de selección | SelectionOptions (con max_entries > 1) | is null, is not null, in, not in |
| Lista de usuarios | UserOptions (con max_entries > 1) | is null, is not null, in, not in |
Ejemplos de búsquedas
1. Buscar según la presencia de una etiqueta o un campo
Puedes buscar elementos en los que se haya aplicado (o no) una etiqueta específica:
'labels/contract' in labelsnot 'labels/contract' in labels
También puedes buscar elementos en los que se haya configurado (o no) un campo específico:
labels/contract.comment IS NOT NULLlabels/contract.comment IS NULL
2. Buscar según campos de un solo valor
Puedes escribir consultas de búsqueda para que coincidan con los valores de campo esperados. En la siguiente tabla, se muestran las consultas de campo válidas:
| Qué deseas consultar | String de consulta |
|---|---|
| Elementos en los que el comentario se establece en "hola" | labels/contract.comment = 'hello' |
| Archivos en los que el comentario comienza con "hola" | labels/contract.comment STARTS WITH 'hello' |
| Archivos en los que el estado es "ejecutado" | labels/contract.status = 'executed' |
| Archivos en los que el estado no es "ejecutado" | labels/contract.status != 'executed' |
| Archivos en los que execution_date es anterior a una fecha específica | labels/contract.execution_date < '2020-06-22' |
| Archivos en los que value_usd (número entero) es menor que un valor específico | labels/contract.value_usd < 2000 |
| Archivos en los que client_contact se establece en una dirección de correo electrónico específica | labels/contract.client_contact = 'alex@altostrat.com' |
3. Buscar según campos con campos de varios valores (como ListOptions.max_entries > 1)
Los campos que admiten varios valores solo se pueden consultar con el operador IN:
'EMAIL_ADDRESS' IN labels/project.project_leadsNOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Ejemplo
En el siguiente ejemplo de código, se muestra cómo usar uno o más labelId para enumerar todos los
archivos con una etiqueta o un valor de campo específicos de un recurso de archivo de Drive file
resource. También se usa el
files.list método. El cuerpo de la solicitud debe estar vacío.
Si deseas incluir labelInfo en la respuesta, también debes especificar lo siguiente:
includeLabelscomo una lista de IDs separados por comas.labelInfoen el parámetrofieldspara indicar que deseas que se muestrelabelInfodentro deincludeLabels.
Si se ejecuta de forma correcta, el cuerpo de la respuesta contiene la lista de archivos.
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;
}
Reemplaza lo siguiente:
- LABEL_1_ID: El primer
labelIdde una etiqueta que se mostrará. - LABEL_2_ID: El segundo
labelIdde una etiqueta que se mostrará.