Cómo buscar archivos con una etiqueta o un valor de campo específicos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
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 etiquetas
Los campos de etiquetas de Google Drive tienen un tipo definido de forma estricta, 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
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_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. Búsqueda basada en 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 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 con un solo valor
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:
Lo que quieres 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 se ejecuta el estado
labels/contract.status = 'executed'
Archivos en los que no se ejecutó el estado
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 está configurado como una dirección de correo electrónico específica
3. Búsqueda basada en campos con 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_leads
NOT '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. También usa el método files.list. El cuerpo de la solicitud debe estar vacío.
Si quieres 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 deseas que se devuelva labelInfo dentro de includeLabels.
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**/asyncfunctionsearchForFileWithLabels(){// Get credentials and build service// TODO (developer) - Use appropriate auth mechanism for your appconst{GoogleAuth}=require('google-auth-library');const{google}=require('googleapis');constauth=newGoogleAuth({scopes:'https://www.googleapis.com/auth/drive'});constservice=google.drive({version:'v3',auth});try{constfileList=awaitservice.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)',});returnfile;}catch(err){// TODO (developer) - Handle errorthrowerr;}
Reemplaza lo siguiente:
LABEL_1_ID: Es el primer labelId de una etiqueta que se devolverá.
LABEL_2_ID: Es el segundo labelId de una etiqueta que se devolverá.
[null,null,["Última actualización: 2025-08-29 (UTC)"],[],[],null,["# Search for files with a specific label or field value\n\nThis page describes how to search for files with a specific label or field value\napplied.\n\nLabel field types\n-----------------\n\nGoogle Drive label fields are strongly typed with each type supporting\ndifferent indexing and search semantics. The following table shows the available\ndata types.\n\n| Type | Label type options | Supported search operators |\n|----------------|------------------------------------------|--------------------------------------------------|\n| Text | TextOptions | `is null, is not null, =, contains, starts with` |\n| Long Text | LongTextOptions | `is null, is not null, contains` |\n| Integer | IntegerOptions | `is null, is not null, =, !=, \u003c, \u003e, \u003c=, \u003e=` |\n| Date | DateOptions | `is null, is not null, =, !=, \u003c, \u003e, \u003c=, \u003e=` |\n| Selection | SelectionOptions | `is null, is not null, =, !=` |\n| User | UserOptions | `is null, is not null, =, !=` |\n| Selection List | SelectionOptions (with max_entries \\\u003e 1) | `is null, is not null, in, not in` |\n| User List | UserOptions (with max_entries \\\u003e 1) | `is null, is not null, in, not in` |\n\n### Search examples\n\n| **Note:** In the examples below, readable strings are used for clarity. Actual resource names and field IDs must be used instead. For example, `labels/contract.execution_date` might look something like this: `labels/837d7f5de85137b86e52.491d`.\n\n**1. Search based on the presence of a label or field**\n\nYou can search for items where a specific label has (or has not) been applied:\n\n- `'labels/contract' in labels`\n- `not 'labels/contract' in labels`\n\nYou can also search for items where a specific field has (or has not) been set:\n\n- `labels/contract.comment IS NOT NULL`\n- `labels/contract.comment IS NULL`\n\n| **Note:** Searching for files without any fields set returns items that the label has not been applied to. You can combine the queries above to find items where the label is applied, but doesn't contain a value for a specific field: `'labels/contract' in labels AND labels/contract.comment IS NULL`.\n\n**2. Search based on single-valued fields**\n\nYou can write search queries to match expected field values. The following table\nshows the valid field queries:\n\n| What you want to query | Query string |\n|---------------------------------------------------------------|---------------------------------------------------------|\n| Items where comment is set to \"hello\" | `labels/contract.comment = 'hello'` |\n| Files where comment starts with \"hello\" | `labels/contract.comment STARTS WITH 'hello'` |\n| Files where status is executed | `labels/contract.status = 'executed'` |\n| Files where status is not executed | `labels/contract.status != 'executed'` |\n| Files where execution_date is before a specific date | `labels/contract.execution_date \u003c '2020-06-22'` |\n| Files where value_usd (integer) is less than a specific value | `labels/contract.value_usd \u003c 2000` |\n| Files where client_contact is set to a specific email address | `labels/contract.client_contact = 'alex@altostrat.com'` |\n\n**3. Search based on fields with multivalued fields (such as\nListOptions.max_entries \\\u003e 1)**\n\nFields that support multiple values can only be queried using the IN operator:\n\n- `'`\u003cvar translate=\"no\"\u003eEMAIL_ADDRESS\u003c/var\u003e`' IN labels/project.project_leads`\n- `NOT '`\u003cvar translate=\"no\"\u003eEMAIL_ADDRESS\u003c/var\u003e`' IN labels/project.project_leads`\n\nExample\n-------\n\nThe following code sample shows how to use one or more `labelId` to list all\nfiles with a specific label or field value from a Drive [file\nresource](/workspace/drive/labels/reference/rest/v2/labels). It also uses the\n[`files.list`](/workspace/drive/api/v2/reference/files/list) method. The request body must\nbe empty.\n\nIf you want to include `labelInfo` in the response, you also must specify:\n\n- [`includeLabels`](/workspace/drive/api/reference/rest/v2/files/get#query-parameters)\n as a comma-separated list of IDs.\n\n- `labelInfo` in the `fields` parameter to denote that you want the\n `labelInfo` returned within `includeLabels`.\n\nIf successful, the [response\nbody](/workspace/drive/api/reference/rest/v3/files/list#response-body) contains the list\nof files. \n\n### Java\n\n List\u003cFile\u003e fileList = driveService.files().list().setIncludeLabels(\"\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e,\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e\").setFields(\"items(labelInfo, id)\").setQ(\"'labels/\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e' in labels and 'labels/\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e' in labels\").execute().getItems();\n\n### Python\n\n file_list = drive_service.files().list(includeLabels=\"\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e,\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e\", q=\"'labels/\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e' in labels and 'labels/\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e' in labels\", fields=\"items(labelInfo, id)\").execute();\n\n### Node.js\n\n /**\n * Search for Drive files with specific labels\n * @return{obj} file list with labelInfo\n **/\n async function searchForFileWithLabels() {\n // Get credentials and build service\n // TODO (developer) - Use appropriate auth mechanism for your app\n\n const {GoogleAuth} = require('google-auth-library');\n const {google} = require('googleapis');\n\n const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});\n const service = google.drive({version: 'v3', auth});\n try {\n const fileList = await service.files.list({\n includeLabels: '\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e,\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e',\n q: '\\'labels/\u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e\\' in labels and \\'labels/\u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e\\' in labels',\n fields:'files(labelInfo, id)',\n });\n return file;\n } catch (err) {\n // TODO (developer) - Handle error\n throw err;\n }\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eLABEL_1_ID\u003c/var\u003e: The first `labelId` of a label to return.\n- \u003cvar translate=\"no\"\u003eLABEL_2_ID\u003c/var\u003e: The second `labelId` of a label to return."]]