Protege el contenido del archivo

La API de Google Drive admite varias formas de evitar la modificación de archivos, como restricción de contenido de archivos y prohibir la opción de descargar, imprimir o copiar archivos.

Haz que los archivos sean de solo lectura con las restricciones de contenido de Drive

Puedes agregar una restricción de contenido a un archivo de Google Drive para evitar que los usuarios haciendo lo siguiente:

  • Cómo modificar el título
  • Cómo editar el contenido
  • Subir una revisión
  • Agregar o modificar comentarios

La aplicación de restricciones de contenido es un mecanismo que permite el contenido de un El elemento de Drive pasará a ser de solo lectura sin cambiar el permisos de acceso. Esto significa que es no una restricción de acceso. Si bien los usuarios no pueden modificar el contenido del archivo, otros aún se permiten las operaciones según el nivel de acceso (por ejemplo, un usuario con acceso de edición aún puede mover un elemento o cambiar la configuración de uso compartido).

Para agregar o quitar una restricción de contenido de un archivo en Drive, un usuario debe tener los permisos. Si se trata de un archivo o una carpeta de Mi unidad o una unidad compartida con la capabilities.canModifyEditorContentRestriction, debes tener role=writer asignados. Para un archivo o una carpeta en Mi unidad o una unidad compartida con una restricción de contenido ownerRestricted, debes ser propietario del archivo o tener role=organizer Para ver un elemento con una restricción de contenido, los usuarios deben tener role=reader o una versión posterior. Para obtener una lista completa de los roles, consulta Roles y permisos. Para cambiar los permisos de un archivo, consulta Cambia los permisos.

Puedes usar el campo booleano contentRestrictions.readOnly en la files recurso para configurar una restricción de contenido. Ten en cuenta que establecer una restricción de contenido en un elemento reemplaza al existente.

Casos de restricciones de contenido

Una restricción de contenido en un elemento de Drive les indica a los usuarios que el contenido no se debe cambiar. Esto puede deberse a alguno de los siguientes motivos:

  • Detener el trabajo en un documento colaborativo durante los períodos de revisión o auditoría
  • Configurar un elemento a un estado finalizado, como aprobado.
  • Evitar cambios durante una reunión sensible
  • Se prohíben los cambios externos en los flujos de trabajo que manejan los sistemas automatizados.
  • Restringir las ediciones realizadas por Google Apps Script y los complementos de Google Workspace
  • Evitar ediciones accidentales en un documento

Ten en cuenta que, si bien las restricciones de contenido pueden ayudar a administrar el contenido, no para evitar que los usuarios con permisos suficientes sigan trabajando en un elemento. Además, no es una forma de crear un registro inmutable. Las restricciones de contenido de Drive son mutables, por lo que en un elemento no garantiza que este nunca cambie.

Cómo administrar archivos con restricciones de contenido

Documentos de Google, Hojas de cálculo de Google y Presentaciones de Google, así como todos los demás archivos, pueden incluir restricciones de contenido.

Las restricciones de contenido de un elemento evitan que se modifiquen el título y el contenido. como:

  • Comentarios y sugerencias (en Documentos, Hojas de cálculo, diapositivas y archivos binarios)
  • Revisiones de un archivo binario
  • Texto y formato en Documentos
  • Texto o fórmulas en Hojas de cálculo, un diseño de Hojas de cálculo y las instancias en Hojas de cálculo
  • Todo el contenido de Presentaciones, al igual que el orden y el número de diapositivas

Algunos tipos de archivos no pueden incluir una restricción de contenido. Algunos ejemplos son los siguientes:

Agregar una restricción de contenido

Para agregar una restricción de contenido de archivo, usa el files.update con el elemento El campo contentRestrictions.readOnly se estableció en true. Agrega un reason opcional para por qué quieres agregar la restricción, como "Contrato finalizado". Lo siguiente La muestra de código muestra cómo agregar una restricción de contenido:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
  // 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});
  const contentRestriction = {
    'readOnly': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Reemplaza FILE_ID por el fileId del archivo que deseas. modificar.

Cuando ejecutas el código de muestra, el archivo tiene restricciones de contenido y un símbolo de bloqueo () aparece junto al nombre del archivo en la interfaz de usuario de Google Drive (IU). El ahora es de solo lectura.

Un archivo con una restricción de contenido en una lista de archivos de Drive.
Figura 1: Un archivo con una restricción de contenido en una lista de archivos de Drive.

Cómo quitar una restricción de contenido

Para quitar una restricción de contenido de un archivo, usa el método files.update con el El campo contentRestrictions.readOnly se estableció en false. La siguiente muestra de código muestra cómo quitar una restricción de contenido:

Java

File updatedFile =
new File()
    .setContentRestrictions(
        ImmutableList.of(new ContentRestriction().setReadOnly(false));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': False}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
  // 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});
  const contentRestriction = {
    'readOnly': False,
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Reemplaza FILE_ID por el fileId del archivo que deseas. modificar.

Cuando ejecutes el código de muestra, el archivo ya no tendrá restricciones de contenido.

También puedes usar la IU de Drive para quitar una restricción de contenido y permitir la edición de contenido (siempre que tengas los permisos correctos) Existen dos para hacerlo:

  1. En Drive, haz clic con el botón derecho en el archivo con una restricción de contenido y Haz clic en Desbloquear .

    Quita una restricción de contenido de un archivo de una lista de archivos de Drive.
    Figura 2: Quitar una restricción de contenido de un archivo de una lista de archivos de Drive
  2. Abre el archivo con una restricción de contenido y haz clic en (Modo bloqueado) > Desbloquear archivo.

    Quita una restricción de contenido de archivo de un documento.
    Figura 3: Quita una restricción de contenido de archivo de un documento.

Verifica si hay restricciones de contenido

Para verificar si hay restricciones de contenido, usa la files.get con el elemento Se mostró un campo contentRestrictions. En la siguiente muestra de código, se indica Verificar el estado de una restricción de contenido:

Java

File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();

Python

response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();

Node.js

/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
  // 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 response = await service.files.get({
      fileId: 'FILE_ID',
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Reemplaza FILE_ID por el fileId del archivo que deseas. de verificación.

Cuando ejecutas el código de muestra, el método devuelve un ContentRestriction recurso si está presente.

Agrega una restricción de contenido que solo pueda modificar el propietario del archivo

Para agregar una restricción de contenido de archivos para que solo los propietarios puedan activar o desactivar el mecanismo, haz lo siguiente: usa el método files.update con el campo booleano contentRestrictions.ownerRestricted establecido en true El siguiente muestra de código indica cómo agregar una restricción de contenido para los propietarios de archivos solamente:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
  // 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});
  const contentRestriction = {
    'readOnly': True,
    'ownerRestricted': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

Reemplaza FILE_ID por el fileId del archivo que deseas. modificar.

Cuando ejecutes el código de muestra, el archivo estará restringido al contenido propietarios pueden quitarlo. Si eres el propietario del archivo, aparecerá un símbolo de bloqueo activo () junto al nombre del archivo en el Interfaz de usuario de Drive (IU). Si no eres el propietario, el símbolo de candado se atenúa.

Para quitar la marca ownerRestricted, usa el método files.update con el Se estableció el campo contentRestrictions.ownerRestricted en false.

Funciones de restricción de contenido

Un recurso files contiene un un conjunto de campos booleanos capabilities que se usan para indicar si una acción se puede realizar en un archivo.

Las restricciones de contenido incluyen los siguientes elementos capabilities:

Para obtener más información, consulta Funciones.

Para ver un ejemplo de cómo recuperar el archivo capabilities, consulta Verificar usuario permisos.

Impedir que los usuarios descarguen, impriman o copien tu archivo

Puedes limitar la forma en que los usuarios con permisos role=commenter o role=reader descargar, imprimir y copiar archivos en Drive Documentos, Hojas de cálculo y Presentaciones.

Para quitar las opciones de descarga, impresión y copia de archivos, usa la files.update con el elemento El campo booleano copyRequiresWriterPermission se estableció en true.