> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Drive

> Gestiona archivos, carpetas y unidades compartidas de Google Drive desde tus flujos en Brain Studio.

**Google Drive** es el sistema de archivos compartido de Google Workspace. A diferencia de integraciones de datos estructurados como Sheets o Supabase, Drive opera sobre **archivos y carpetas**: documentos, PDFs, imágenes, contratos y cualquier recurso que necesite almacenarse, organizarse o compartirse como parte de un proceso.

En **Brain Studio**, la integración permite que tus flujos creen, busquen, compartan y organicen archivos en Drive directamente desde la conversación, sin que nadie tenga que abrir Drive aparte.

## Qué habilita Google Drive

Al conectar **Google Drive**, puedes:

* **Entregar documentos al cliente desde el chat** — buscar un archivo, ajustar permisos y compartir el enlace sin que nadie navegue carpetas manualmente
* **Recibir y clasificar archivos del usuario** — subir adjuntos a la carpeta correcta con nomenclatura consistente según cliente, caso o proceso
* **Provisionar estructura por cliente o proyecto** — crear carpetas, copiar plantillas y compartir con el equipo asignado automáticamente
* **Gobernar colaboración y permisos** — compartir recursos, resolver propuestas de acceso y trabajar comentarios en documentos
* **Consultar metadatos y contexto** — identificar rutas, versiones y usuario actual antes de tomar decisiones en el flujo

***

## Instalación

### Requisitos previos

1. Una **cuenta de Google** con acceso a **Google Drive**.
2. Permisos suficientes en los recursos que vas a gestionar (comentarios, compartición o unidades compartidas, según aplique).

### Cómo conectarla

Puedes conectar **Google Drive** de dos maneras:

* **Desde el Marketplace** — buscas la integración y haces la conexión manual.
* **Desde Jelou Agent** — si el agente detecta que necesitas Drive mientras construyes una solución, te pedirá conectarlo en ese momento.

<Tip>
  Si estás creando una solución desde cero, lo más habitual es conectar **Google Drive** desde **Jelou Agent**. Si ya sabes qué integración necesitas, puedes instalarla manualmente desde el **Marketplace**.
</Tip>

En ambos casos, el acceso se realiza mediante **OAuth** con una ventana segura de Google.

<CardGroup cols={2}>
  <Card title="Cómo usar integraciones en Brain" href="/guides/integraciones/como-usar-integraciones-en-brain" icon="book-open">
    Instalación con Jelou Agent o Marketplace, y uso en Canvas frente a AI Agent.
  </Card>

  <Card title="Jelou Agent" href="/guides/getting-started/jelou-agent" icon="sparkles">
    Cómo describir tu solución para que Brain sugiera integraciones y arme el flujo.
  </Card>
</CardGroup>

El siguiente flujo describe la instalación manual desde el **Marketplace**.

<Steps>
  <Step title="Abrir el Marketplace">
    En Brain Studio, abre **Marketplace** desde el menú lateral.
  </Step>

  <Step title="Buscar Google Drive">
    Encuentra **Google Drive** en el catálogo y haz clic en **Conectar**.
  </Step>

  <Step title="Autorizar acceso con Google">
    Se abrirá una ventana de autorización segura de Google. Inicia sesión si hace falta y acepta los permisos solicitados.
  </Step>

  <Step title="Confirmar la instalación">
    Al volver a Brain Studio, deja finalizar el asistente hasta que la integración aparezca como **conectada**.

    <Check>
      En el **Marketplace**, Google Drive debe mostrarse como conectada. Desde el **Canvas** puedes añadir su nodo, y en **AI Agent** → **Herramientas** puedes activarla.
    </Check>
  </Step>
</Steps>

***

## Tools disponibles

A alto nivel, las acciones se agrupan así:

* **Consultar** — buscar/listar archivos, carpetas, unidades, comentarios, respuestas y metadatos.
* **Crear o modificar** — crear, copiar, subir, mover, actualizar y compartir recursos.
* **Colaboración y gobierno** — comentarios, respuestas, propuestas de acceso y permisos.
* **Eliminar** — mover a papelera o eliminar recursos de forma permanente.

La integración expone 37 tools en Brain Studio; a continuación, cada una con propósito, inputs y ejemplo.

<AccordionGroup>
  <Accordion title="Agregar comentario">
    Añade un comentario **no anclado** a un archivo compatible (p. ej. Google Docs): retroalimentación general sin resaltar un fragmento concreto.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **content** (string) — Texto del comentario (HTML permitido según API).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "content": "Revisar la sección de conclusiones antes de publicar."
    }
    ```

    [Documentación de Google: `comments.create`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/create)
  </Accordion>

  <Accordion title="Compartir archivo o carpeta">
    Crea un [permiso de uso compartido](https://support.google.com/drive/answer/7166529) sobre un archivo o carpeta y puede devolver una URL de uso compartido según la configuración.

    **Inputs:**

    * **fileId** (string) — ID del archivo o carpeta.
    * **role** (enum: `reader` | `writer` | `commenter` | `owner`) — Nivel de acceso.
    * **type** (enum: `user` | `group` | `domain` | `anyone`) — Tipo de destinatario.
    * **emailAddress** (opcional, string) — Correo si `type` es `user` o `group`.
    * **domain** (opcional, string) — Dominio si `type` es `domain`.
    * **sendNotificationEmail** (opcional, boolean) — Notificar por correo.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "role": "writer",
      "type": "user",
      "emailAddress": "colaborador@ejemplo.com",
      "sendNotificationEmail": true
    }
    ```

    [Ayuda de Google: cómo funciona el uso compartido](https://support.google.com/drive/answer/7166529) · [`permissions.create`](https://developers.google.com/drive/api/v3/reference/permissions/create)
  </Accordion>

  <Accordion title="Copiar archivo">
    Crea una copia de un archivo en tu Drive (u otra ubicación admitida).

    **Inputs:**

    * **fileId** (string) — ID del archivo origen.
    * **name** (opcional, string) — Nombre de la copia.
    * **folderId** (opcional, string) — Carpeta destino.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "name": "reporte-copia.pdf",
      "folderId": "1A2B3CcarpetaID"
    }
    ```

    [Documentación de Google: `files.copy`](https://developers.google.com/drive/api/v3/reference/files/copy)
  </Accordion>

  <Accordion title="Crear nuevo archivo desde plantilla">
    Crea un **Google Doc** a partir de una plantilla. Opcionalmente puedes definir **marcadores de posición** en la plantilla que la acción sustituye por valores.

    **Inputs:**

    * **templateFileId** (string) — ID del documento plantilla.
    * **name** (opcional, string) — Título del documento nuevo.
    * **folderId** (opcional, string) — Carpeta destino.
    * **placeholders** / **replacements** (opcional, objeto) — Mapa clave-valor para sustituir marcadores (nombres exactos según Brain Studio).

    <Note>
      La sustitución de marcadores en plantillas suele basarse en convenciones tipo **mustache**; consulta el paquete usado por la integración para el formato exacto de los placeholders.
    </Note>

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "templateFileId": "1TplAbC123",
      "name": "Contrato - Cliente X",
      "folderId": "1A2B3CcarpetaID",
      "placeholders": {
        "{{nombre}}": "María",
        "{{fecha}}": "2025-03-23"
      }
    }
    ```

    [Google: `files` / Docs](https://developers.google.com/drive/api/v3/reference/files/create) · [google-docs-mustaches (placeholders)](https://www.npmjs.com/package/google-docs-mustaches)
  </Accordion>

  <Accordion title="Crear nuevo archivo desde texto">
    Crea un archivo nuevo con **contenido de texto plano** (p. ej. `.txt` o tipo MIME indicado).

    **Inputs:**

    * **name** (string) — Nombre del archivo.
    * **content** (string) — Contenido en texto plano.
    * **mimeType** (opcional, string) — Por defecto suele ser `text/plain`.
    * **folderId** (opcional, string) — Carpeta padre.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "notas.txt",
      "content": "Línea 1\\nLínea 2",
      "mimeType": "text/plain",
      "folderId": "1A2B3CcarpetaID"
    }
    ```

    [Documentación de Google: `files.create`](https://developers.google.com/drive/api/v3/reference/files/create)
  </Accordion>

  <Accordion title="Crear Carpeta">
    Crea una carpeta vacía en la ubicación indicada.

    **Inputs:**

    * **name** (string) — Nombre de la carpeta.
    * **parentFolderId** (opcional, string) — Carpeta padre.
    * **description** (opcional, string) — Descripción.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "Documentos 2025",
      "parentFolderId": "0B1XyZpadreID",
      "description": "Documentos del año 2025"
    }
    ```

    [Documentación de Google: `files.create`](https://developers.google.com/drive/api/v3/reference/files/create) (tipo carpeta)
  </Accordion>

  <Accordion title="Crear unidad compartida">
    Crea una **unidad compartida** nueva (Team Drive).

    **Inputs:**

    * **name** (string) — Nombre de la unidad.
    * **requestId** (opcional, string) — ID de solicitud idempotente si la API lo requiere.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "Proyecto Alpha"
    }
    ```

    [Documentación de Google: `drives.create`](https://developers.google.com/drive/api/v3/reference/drives/create)
  </Accordion>

  <Accordion title="Eliminar comentario">
    Elimina un comentario por su ID (debes ser propietario del comentario o tener permisos sobre el archivo).

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd"
    }
    ```

    [Documentación de Google: `comments.delete`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/delete)
  </Accordion>

  <Accordion title="Eliminar archivo">
    **Elimina de forma permanente** un archivo o carpeta; **no** lo mueve a la papelera.

    **Inputs:**

    * **fileId** (string) — ID del recurso.

    <Warning>
      Esta acción es **irreversible** en el sentido de la API `files.delete`. Para enviar a la papelera usa **Mover Archivo a la Papelera**.
    </Warning>

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID"
    }
    ```

    [Documentación de Google: `files.delete`](https://developers.google.com/drive/api/v3/reference/files/delete)
  </Accordion>

  <Accordion title="Eliminar Respuesta">
    Elimina una respuesta concreta a un comentario.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **replyId** (string) — ID de la respuesta.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "replyId": "reply-id-123"
    }
    ```

    [Documentación de Google: `replies.delete`](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/delete)
  </Accordion>

  <Accordion title="Eliminar unidad compartida">
    Elimina una unidad compartida **solo si está vacía** (sin contenido).

    **Inputs:**

    * **driveId** (string) — ID de la unidad compartida.

    <Warning>
      Requisito habitual de la API: la unidad no debe contener archivos ni carpetas. Vacía primero la unidad o usa otras tools para mover o eliminar contenido.
    </Warning>

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "driveId": "0AJxyZunidadID"
    }
    ```

    [Documentación de Google: `drives.delete`](https://developers.google.com/drive/api/v3/reference/drives/delete)
  </Accordion>

  <Accordion title="Descargar archivo">
    Descarga el contenido de un archivo. El conector puede devolver **base64** para archivos pequeños o una **URL de descarga** para archivos grandes.

    **Inputs:**

    * **fileId** (string) — ID del archivo.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID"
    }
    ```

    [Documentación de Google: descargas](https://developers.google.com/drive/api/v3/manage-downloads)
  </Accordion>

  <Accordion title="Buscar archivo">
    Busca archivos usando criterios admitidos por la API (p. ej. nombre o consulta `q`).

    **Inputs:**

    * **name** (opcional, string) — Nombre o fragmento.
    * **query** (opcional, string) — Consulta de búsqueda de archivos.
    * **pageSize** (opcional, number) — Límite de resultados.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "informe",
      "pageSize": 20
    }
    ```

    [Documentación de Google: buscar archivos y carpetas](https://developers.google.com/drive/api/v3/search-files)
  </Accordion>

  <Accordion title="Buscar Carpeta">
    Busca carpetas por nombre (u otra consulta admitida).

    **Inputs:**

    * **name** (opcional, string) — Nombre de la carpeta.
    * **query** (opcional, string) — Consulta (p. ej. `mimeType = 'application/vnd.google-apps.folder'`).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "Facturación",
      "query": "mimeType = 'application/vnd.google-apps.folder' and name contains 'Facturación'"
    }
    ```

    [Documentación de Google: buscar archivos y carpetas](https://developers.google.com/drive/api/v3/search-files)
  </Accordion>

  <Accordion title="Buscar Formularios">
    Lista o busca **Google Forms** por nombre (MIME tipo de formulario).

    **Inputs:**

    * **name** (opcional, string) — Nombre del formulario.
    * **query** (opcional, string) — Consulta personalizada.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "Encuesta satisfacción",
      "query": "mimeType = 'application/vnd.google-apps.form'"
    }
    ```

    [Documentación de Google: buscar archivos y carpetas](https://developers.google.com/drive/api/v3/search-files)
  </Accordion>

  <Accordion title="Buscar hojas de cálculo">
    Busca **Google Sheets** por nombre.

    **Inputs:**

    * **name** (opcional, string) — Nombre de la hoja.
    * **query** (opcional, string) — Consulta (p. ej. `mimeType = 'application/vnd.google-apps.spreadsheet'`).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "Ventas Q1",
      "query": "mimeType = 'application/vnd.google-apps.spreadsheet' and name contains 'Ventas'"
    }
    ```

    [Documentación de Google: buscar archivos y carpetas](https://developers.google.com/drive/api/v3/search-files)
  </Accordion>

  <Accordion title="Obtener Comentario por ID">
    Obtiene un comentario concreto por **commentId** en un archivo.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd"
    }
    ```

    [Documentación de Google: `comments.get`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/get)
  </Accordion>

  <Accordion title="Obtener Usuario Actual">
    Devuelve información de la cuenta autenticada vía **`about.get`**: nombre, correo, espacio usado, cuota, etc.

    **Inputs:**

    * **fields** (opcional, string) — Campos a devolver (según API).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fields": "user,storageQuota"
    }
    ```

    [Documentación de Google: `about.get`](https://developers.google.com/drive/api/v3/reference/about/get)
  </Accordion>

  <Accordion title="Obtener archivo por ID">
    Obtiene metadatos de un archivo o carpeta por **fileId**.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **fields** (opcional, string) — Campos a incluir en la respuesta.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "fields": "id,name,mimeType,parents,webViewLink"
    }
    ```

    [Documentación de Google: `files.get`](https://developers.google.com/drive/api/reference/rest/v3/files/get)
  </Accordion>

  <Accordion title="Obtener el ID de la carpeta para una ruta">
    Resuelve el **folderId** de la última carpeta de una ruta (p. ej. `Carpeta1/Carpeta2`), creando carpetas intermedias solo si la tool lo indica.

    **Inputs:**

    * **path** (string) — Ruta con separadores (p. ej. `/` o el formato que muestre Brain Studio).
    * **rootFolderId** (opcional, string) — Carpeta raíz si no es “Mi unidad” por defecto.
    * **createMissing** (opcional, boolean) — Crear carpetas faltantes.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "path": "Clientes/2025/Contratos",
      "createMissing": true
    }
    ```

    [Documentación de Google: buscar archivos y carpetas](https://developers.google.com/drive/api/v3/search-files)
  </Accordion>

  <Accordion title="Obtener Respuesta por ID">
    Obtiene una respuesta concreta dentro de un comentario.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **replyId** (string) — ID de la respuesta.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "replyId": "reply-id-123"
    }
    ```

    [Documentación de Google: `replies.get`](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/get)
  </Accordion>

  <Accordion title="Obtener Unidad Compartida">
    Obtiene metadatos de **una** unidad compartida por ID o, según parámetros, información de las unidades accesibles.

    **Inputs:**

    * **driveId** (opcional, string) — ID de la unidad; si se omite, el comportamiento depende de la tool (p. ej. listar todas).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "driveId": "0AJxyZunidadID"
    }
    ```

    [Documentación de Google: `drives.get`](https://developers.google.com/drive/api/v3/reference/drives/get)
  </Accordion>

  <Accordion title="Listar propuestas de acceso">
    Lista **propuestas de acceso** pendientes para un archivo o carpeta (flujos de solicitud de acceso en Drive).

    **Inputs:**

    * **fileId** (string) — ID del archivo o carpeta.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID"
    }
    ```

    [Documentación de Google: `accessProposals.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/accessproposals/list)
  </Accordion>

  <Accordion title="Listar comentarios">
    Lista todos los comentarios de un archivo.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **pageSize** (opcional, number) — Tamaño de página.
    * **pageToken** (opcional, string) — Paginación.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "pageSize": 50
    }
    ```

    [Documentación de Google: `comments.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/list)
  </Accordion>

  <Accordion title="Listar archivos">
    Lista archivos dentro de una **carpeta** u otros criterios admitidos (`files.list`).

    **Inputs:**

    * **folderId** (opcional, string) — Carpeta padre.
    * **pageSize** (opcional, number) — Cantidad de resultados (máx. habitual 100).
    * **pageToken** (opcional, string) — Token de página siguiente.
    * **query** (opcional, string) — Filtro adicional.
    * **orderBy** (opcional, string) — Orden (p. ej. `modifiedTime desc`).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "pageSize": 25,
      "pageToken": "CAoQAA",
      "folderId": "1A2B3CcarpetaID",
      "query": "mimeType != 'application/vnd.google-apps.folder'",
      "orderBy": "modifiedTime desc"
    }
    ```

    [Documentación de Google: `files.list`](https://developers.google.com/drive/api/v3/reference/files/list)
  </Accordion>

  <Accordion title="Listar respuestas">
    Lista las respuestas de un comentario concreto.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd"
    }
    ```

    [Documentación de Google: `replies.list`](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/list)
  </Accordion>

  <Accordion title="Mover Archivo">
    Mueve un archivo (o carpeta) cambiando sus **padres** a la carpeta destino.

    **Inputs:**

    * **fileId** (string) — ID del ítem a mover.
    * **targetFolderId** (string) — ID de la carpeta destino.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "targetFolderId": "1A2B3CnuevaCarpetaID"
    }
    ```

    [Documentación de Google: `files.update` (parents)](https://developers.google.com/drive/api/v3/reference/files/update)
  </Accordion>

  <Accordion title="Mover Archivo a la Papelera">
    Marca el archivo o carpeta como **en la papelera** (`trashed`), sin borrado permanente.

    **Inputs:**

    * **fileId** (string) — ID del recurso.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID"
    }
    ```

    [Documentación de Google: `files.update`](https://developers.google.com/drive/api/v3/reference/files/update)
  </Accordion>

  <Accordion title="Responder al comentario">
    Añade una **respuesta** a un comentario existente.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **content** (string) — Texto de la respuesta.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "content": "Hecho, revisado el apartado 3."
    }
    ```

    [Documentación de Google: `replies.create`](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/create)
  </Accordion>

  <Accordion title="Resolver Propuestas de Acceso">
    **Acepta** o **rechaza** una propuesta de acceso a un archivo o carpeta.

    **Inputs:**

    * **fileId** (string) — ID del recurso.
    * **proposalId** (string) — ID de la propuesta.
    * **action** (enum) — Valor admitido por la API (p. ej. aceptar / denegar).

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "proposalId": "prop-abc-123",
      "action": "accept"
    }
    ```

    [Documentación de Google: `accessProposals.resolve`](https://developers.google.com/workspace/drive/api/reference/rest/v3/accessproposals/resolve)
  </Accordion>

  <Accordion title="Resolver Comentario">
    Marca un comentario como **resuelto** (cierra el hilo de revisión en la UI de Docs).

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **resolved** (opcional, boolean) — Suele ser `true` para resolver.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "resolved": true
    }
    ```

    [Documentación de Google: `comments.update`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/update)
  </Accordion>

  <Accordion title="Buscar unidades compartidas">
    Busca unidades compartidas con una **consulta** (`q`) y opciones de paginación.

    **Inputs:**

    * **query** (opcional, string) — Criterios de búsqueda.
    * **pageSize** (opcional, number)
    * **pageToken** (opcional, string)

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "query": "name contains 'Marketing'",
      "pageSize": 10
    }
    ```

    [Documentación de Google: buscar unidades compartidas](https://developers.google.com/drive/api/v3/search-shareddrives)
  </Accordion>

  <Accordion title="Actualizar Comentario">
    Actualiza el **contenido** de un comentario existente.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **content** (string) — Nuevo texto.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "content": "Texto del comentario corregido."
    }
    ```

    [Documentación de Google: `comments.update`](https://developers.google.com/workspace/drive/api/reference/rest/v3/comments/update)
  </Accordion>

  <Accordion title="Actualizar archivo">
    Actualiza **metadatos** (nombre, descripción, padres) y/o **contenido** del archivo según el tipo.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **name** (opcional, string) — Nuevo nombre.
    * **description** (opcional, string) — Descripción.
    * **content** (opcional, string) — Contenido en base64 para archivos binarios de tamaño manejable.
    * **mimeType** (opcional, string) — Requerido si actualizas contenido.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZarchivoID",
      "name": "reporte-actualizado.pdf",
      "description": "Versión corregida",
      "content": "JVBERi0xLjQKJcTl8uXrp/Og0MTGCg==",
      "mimeType": "application/pdf"
    }
    ```

    [Documentación de Google: `files.update`](https://developers.google.com/drive/api/v3/reference/files/update)
  </Accordion>

  <Accordion title="Actualizar Respuesta">
    Edita el texto de una **respuesta** a un comentario.

    **Inputs:**

    * **fileId** (string) — ID del archivo.
    * **commentId** (string) — ID del comentario.
    * **replyId** (string) — ID de la respuesta.
    * **content** (string) — Nuevo contenido.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "fileId": "1XyZdocId",
      "commentId": "AAA-BbCcDd",
      "replyId": "reply-id-123",
      "content": "Actualización: ya está publicado."
    }
    ```

    [Documentación de Google: `replies.update`](https://developers.google.com/workspace/drive/api/reference/rest/v3/replies/update)
  </Accordion>

  <Accordion title="Actualizar Unidad Compartida">
    Actualiza metadatos de una unidad compartida (p. ej. nombre, restricciones según API).

    **Inputs:**

    * **driveId** (string) — ID de la unidad.
    * **name** (opcional, string) — Nuevo nombre.
    * Otros campos según formulario en Brain Studio.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "driveId": "0AJxyZunidadID",
      "name": "Proyecto Alpha (archivado)"
    }
    ```

    [Documentación de Google: `drives.update`](https://developers.google.com/drive/api/v3/reference/drives/update)
  </Accordion>

  <Accordion title="Subir Archivo">
    Sube un archivo nuevo a Drive desde **URL** o contenido en **base64**, con carpeta y descripción opcionales.

    **Inputs:**

    * **name** (string) — Nombre del archivo.
    * **mimeType** (string) — Tipo MIME.
    * **source** (enum: `url` | `base64`) — Origen del contenido.
    * **content** (string) — URL o datos codificados.
    * **folderId** (opcional, string) — Carpeta destino.
    * **description** (opcional, string) — Descripción.

    **Ejemplo:**

    ```json theme={null} theme={null}
    {
      "name": "reporte.pdf",
      "mimeType": "application/pdf",
      "source": "url",
      "content": "https://ejemplo.com/archivos/reporte.pdf",
      "folderId": "1A2B3CcarpetaID",
      "description": "Reporte mensual de ventas"
    }
    ```

    [Documentación de Google: subidas](https://developers.google.com/drive/api/v3/manage-uploads)
  </Accordion>
</AccordionGroup>

***

## Cómo usar en Brain

Una vez conectada, puedes usar **Google Drive** en dos superficies:

### En AI Agent

Ideal cuando el usuario quiere buscar, subir, compartir o comentar archivos en lenguaje natural.

<Steps>
  <Step title="Abre el nodo AI Agent">
    En el Canvas, selecciona o añade el nodo **AI Agent**.
  </Step>

  <Step title="Abre Herramientas">
    En el panel derecho, entra a la pestaña **Herramientas**.
  </Step>

  <Step title="Agrega Google Drive">
    Usa **Agregar tool**, busca **Google Drive** y actívala.
  </Step>

  <Step title="Configura las tools">
    Elige integración completa o activa solo las acciones que necesites. Ajusta el prompt para confirmar archivo, carpeta o **fileId** antes de compartir o eliminar, y para pedir aclaración si la intención es ambigua.

    <Check>
      **Google Drive** aparece en la lista de herramientas del agente y puedes abrir su configuración con el icono de ajustes.
    </Check>
  </Step>
</Steps>

El agente decidirá automáticamente cuándo buscar, subir o compartir archivos según la conversación.

### En Canvas

Ideal cuando necesitas control total del flujo (por ejemplo: subir archivo → ajustar permisos → notificar).

<Steps>
  <Step title="Arrastra Google Drive al Canvas">
    En el panel lateral, abre **Marketplace** y arrastra **Google Drive** al flujo.
  </Step>

  <Step title="Selecciona la tool">
    Con el nodo seleccionado, en **Tools** elige la acción (por ejemplo **Subir Archivo**).
  </Step>

  <Step title="Configura el cuerpo y la memoria">
    Completa el JSON del cuerpo de la petición y, si aplica, **Guardar respuesta** en una variable de memoria.
  </Step>

  <Step title="Conecta el flujo">
    Enlaza las salidas **Finalizó la tarea** y **Hubo un error** con los nodos siguientes.

    <Check>
      El nodo queda listo para ejecutarse en el orden definido por tu flujo.
    </Check>
  </Step>
</Steps>

**Ejemplo de configuración:**

El editor del nodo muestra un cuerpo JSON alineado con la tool de carga o gestión que elijas (este ejemplo corresponde a subir un archivo desde URL). Ajusta `mimeType`, `source` y `content` según el formulario de la tool.

```json theme={null}
{
  "name": "{{$memory.nombre_archivo}}",
  "mimeType": "application/pdf",
  "source": "url",
  "content": "{{$memory.url_archivo}}",
  "folderId": "{{$memory.folder_id}}"
}
```

<Info>
  Si construyes con **Jelou Agent**, el sistema decide automáticamente cómo usar la integración: puede configurarla dentro de un **AI Agent** o como nodo en **Canvas**, según el tipo de proceso.
</Info>

***

## Casos de uso

<AccordionGroup>
  <Accordion title="Entrega de documentos al cliente por WhatsApp">
    El cliente pide su factura, contrato o certificado por chat. En lugar de buscarlo manualmente en carpetas compartidas, el flujo lo localiza en Drive, ajusta permisos y entrega el enlace en la misma conversación.

    **Ejemplo concreto:** una empresa de servicios financieros recibe solicitudes de certificados por WhatsApp. El cliente pide "mi certificado de retención 2024". El flujo busca el archivo en la carpeta del cliente, le da acceso de lectura y responde con el enlace directo. El cliente lo descarga en segundos sin que nadie intervenga.

    **Ideal para:** utilities, fintech, educación y servicios con documentación recurrente que los clientes solicitan con frecuencia.
  </Accordion>

  <Accordion title="Recepción y clasificación de adjuntos del usuario">
    Los archivos que el usuario envía por chat se guardan en la carpeta correcta de Drive con nomenclatura consistente, en lugar de quedar sueltos en bandejas de correo personales.

    **Ejemplo concreto:** un proceso de onboarding KYC. El cliente envía foto de su documento de identidad por WhatsApp. El flujo identifica al cliente, resuelve la carpeta de su expediente en Drive, sube el archivo con nombre estandarizado (ej. "INE-nombre-fecha.jpg") y confirma la recepción. El equipo de compliance encuentra todo organizado cuando revisa el caso.

    **Ideal para:** onboarding KYC, soporte con evidencias, operaciones documentales y compliance.
  </Accordion>

  <Accordion title="Expediente automático por cliente o proyecto">
    Cada nuevo cliente u oportunidad obtiene su estructura de carpetas, plantillas copiadas y permisos asignados antes de que empiece el trabajo.

    **Ejemplo concreto:** una consultora B2B cierra un nuevo proyecto. El flujo crea la carpeta del proyecto en Drive, copia las plantillas estándar (propuesta, contrato, minutas), comparte la carpeta con el equipo asignado y registra el enlace en el CRM. El primer día del proyecto, todo está listo sin que nadie haya creado carpetas manualmente.

    **Ideal para:** ventas B2B, implementación y proyectos por cuenta que necesitan estructura homogénea.
  </Accordion>
</AccordionGroup>

***

## Integraciones que combinan bien con Google Drive

<AccordionGroup>
  <Accordion title="Gmail">
    Después de generar o localizar un archivo en Drive, el flujo puede enviarlo como enlace en un correo desde la cuenta conectada de Gmail, con permisos ya ajustados.

    **Flujo combinado:** archivo generado en Drive → correo vía Gmail con enlace compartido al destinatario.

    [Documentación de Gmail](/guides/integraciones/productividad/gmail)
  </Accordion>

  <Accordion title="Google Sheets">
    Cada archivo subido o generado puede registrarse como fila en una hoja de control: cliente, tipo de documento, fecha, enlace y estado. Útil para auditoría o seguimiento operativo.

    **Flujo combinado:** archivo subido a Drive → nueva fila en Sheets con metadatos y enlace.

    [Documentación de Google Sheets](/guides/integraciones/productividad/google-sheets)
  </Accordion>

  <Accordion title="HubSpot">
    Cuando el proceso comercial genera documentos (propuestas, contratos), el flujo puede crear el archivo en Drive y registrar el enlace en el deal o contacto correspondiente de HubSpot.

    **Flujo combinado:** propuesta generada en Drive → enlace registrado en la oferta de HubSpot.

    [Documentación de HubSpot](/guides/integraciones/crm/hubspot)
  </Accordion>

  <Accordion title="Google Calendar">
    Al agendar una reunión, el flujo puede crear la carpeta de materiales en Drive y asociar el enlace al evento, para que los asistentes tengan acceso antes de la llamada.

    **Flujo combinado:** evento creado en Google Calendar → carpeta de materiales creada en Drive → enlace adjunto al evento.

    [Documentación de Google Calendar](/guides/integraciones/agendamiento/google-calendar)
  </Accordion>
</AccordionGroup>

***

## Artículos relacionados

<CardGroup cols={2}>
  <Card title="Integraciones" href="/guides/integraciones/integraciones" icon="grid">
    Catálogo de integraciones disponibles en el Marketplace.
  </Card>

  <Card title="Cómo usar integraciones en Brain" href="/guides/integraciones/como-usar-integraciones-en-brain" icon="book-open">
    Flujo general para instalar y usar integraciones en Brain Studio.
  </Card>
</CardGroup>
