En esta página, se describe cómo buscar archivos con una etiqueta específica o un valor de campo aplicado.
Tipos de campos de etiquetas
Los campos de etiquetas de Google Drive están bien escritos 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 compatibles |
---|---|---|
Texto | TextOptions | is null, is not null, =, contains, starts with |
Texto largo | LongTextOptions | is null, is not null, contains |
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_entry > 1) | is null, is not null, in, not in |
Lista de usuarios | UserOptions (con max_entry > 1) | is null, is not null, in, not in |
Ejemplos de búsquedas
1. Busca en función de la presencia de una etiqueta o un campo
Puedes buscar elementos para los que se haya aplicado (o no) una etiqueta específica:
'labels/contract' in labels
not '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 NULL
labels/contract.comment IS NULL
2. Búsqueda basada en campos de valor único
Puedes escribir búsquedas 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 está configurado como "hola" | labels/contract.comment = 'hello' |
Archivos en los que el comentario comienza con “hello” | labels/contract.comment STARTS WITH 'hello' |
Archivos en los que se ejecuta el estado | labels/contract.status = 'executed' |
Archivos en los que no se ejecuta el estado | labels/contract.status != 'executed' |
Archivos en los que la fecha de ejecución 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. Búsqueda basada en campos con campos de valores múltiples (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_leads
NOT 'EMAIL_ADDRESS' IN labels/project.project_leads
Ejemplo
En la siguiente muestra de código, verás 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. También usa el método files.list
. El cuerpo de la solicitud debe estar vacío.
Si deseas incluir labelInfo
en la respuesta, también debes especificar lo siguiente:
includeLabels
como una lista de ID separados por comas.labelInfo
en el parámetrofields
para indicar que deseas quelabelInfo
se muestre enincludeLabels
.
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: Es el primer
labelId
de una etiqueta que se mostrará. - LABEL_2_ID: Es el segundo
labelId
de una etiqueta que se mostrará.