Pesquisar arquivos com um marcador ou valor de campo específico

Nesta página, descrevemos como pesquisar arquivos com um rótulo ou valor de campo específico aplicado.

Tipos de campos de rótulo

Os campos de marcador do Google Drive são fortemente tipados, e cada tipo oferece suporte a diferentes semânticas de indexação e pesquisa. A tabela a seguir mostra os tipos de dados disponíveis.

Tipo Opções de tipo de marcador Operadores de pesquisa compatíveis
Texto TextOptions is null, is not null, =, contains, starts with
Texto longo LongTextOptions is null, is not null, contains
Número inteiro IntegerOptions is null, is not null, =, !=, <, >, <=, >=
Data DateOptions is null, is not null, =, !=, <, >, <=, >=
Seleção SelectionOptions is null, is not null, =, !=
Usuário UserOptions is null, is not null, =, !=
Lista de seleção SelectionOptions (com max_entries > 1) is null, is not null, in, not in
Lista de usuários UserOptions (com max_entries > 1) is null, is not null, in, not in

1. Pesquisar com base na presença de um rótulo ou campo

É possível pesquisar itens em que um rótulo específico foi (ou não foi) aplicado:

  • 'labels/contract' in labels
  • not 'labels/contract' in labels

Você também pode pesquisar itens em que um campo específico foi (ou não foi) definido:

  • labels/contract.comment IS NOT NULL
  • labels/contract.comment IS NULL

2. Pesquisar com base em campos de valor único

É possível escrever consultas de pesquisa para corresponder aos valores de campo esperados. A tabela a seguir mostra as consultas de campo válidas:

O que você quer consultar String de consulta
Itens em que o comentário está definido como "hello" labels/contract.comment = 'hello'
Arquivos em que o comentário começa com "olá" labels/contract.comment STARTS WITH 'hello'
Arquivos em que o status é executado labels/contract.status = 'executed'
Arquivos em que o status não é executado labels/contract.status != 'executed'
Arquivos em que "execution_date" é anterior a uma data específica labels/contract.execution_date < '2020-06-22'
Arquivos em que value_usd (número inteiro) é menor que um valor específico labels/contract.value_usd < 2000
Arquivos em que client_contact está definido como um endereço de e-mail específico labels/contract.client_contact = 'alex@altostrat.com'

3. Pesquisar com base em campos com valores múltiplos (como ListOptions.max_entries > 1)

Os campos que aceitam vários valores só podem ser consultados usando o operador IN:

  • 'EMAIL_ADDRESS' IN labels/project.project_leads
  • NOT 'EMAIL_ADDRESS' IN labels/project.project_leads

Exemplo

O exemplo de código a seguir mostra como usar um ou mais labelId para listar todos os arquivos com um rótulo ou valor de campo específico de um recurso de arquivo do Drive. Ele também usa o método files.list. O corpo da solicitação precisa estar vazio.

Se você quiser incluir labelInfo na resposta, também precisará especificar:

  • includeLabels como uma lista de IDs separada por vírgulas.

  • labelInfo no parâmetro fields para indicar que você quer que o labelInfo seja retornado em includeLabels.

Se a solicitação for bem-sucedida, o corpo da resposta vai conter a lista de arquivos.

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;
  }

Substitua:

  • LABEL_1_ID: o primeiro labelId de um rótulo a ser retornado.
  • LABEL_2_ID: o segundo labelId de um rótulo a ser retornado.