Cómo buscar archivos con una etiqueta o un valor de campo específicos

En esta página, se describe cómo buscar archivos con una etiqueta o un valor de campo específicos se aplicó.

Tipos de campos de etiquetas

Los campos de etiquetas de Google Drive están bien escritos y cada tipo es compatible diferentes semánticas de indexación y búsqueda. En la siguiente tabla, se muestran los recursos tipos de datos.

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_entradas > 1) is null, is not null, in, not in
Lista de usuarios UserOptions (con max_entradas > 1) is null, is not null, in, not in

1. Búsqueda basada en la presencia de una etiqueta o un campo

Puedes buscar elementos a los que se aplicó (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 establecido (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. La siguiente tabla muestra las consultas de campo válidas:

Qué quieres consultar String de consulta
Elementos en los que el comentario está configurado como “hello” 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 queexecution_date es anterior a una fecha específica labels/contract.execution_date < '2020-06-22'
Archivos en los que value_usd (integer) es menor que un valor específico labels/contract.value_usd < 2000
Archivos en los que client_contact esté configurado 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_entradas > 1)

Los campos que admiten varios valores solo se pueden consultar mediante 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, se indica cómo usar uno o más labelId para enumerar todos. archivos con una etiqueta o un valor de campo específicos de un archivo de Drive recurso. También usa la files.list. El cuerpo de la solicitud debe debe estar vacío.

Si deseas incluir labelInfo en la respuesta, también debes especificar lo siguiente:

  • includeLabels como una lista de IDs separados por comas.

  • labelInfo en el parámetro fields para indicar que quieres que Se devuelve labelInfo en un plazo de includeLabels.

Si tiene éxito, la respuesta body 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: El segundo labelId de una etiqueta que se mostrará.