A API Google Drive oferece suporte a várias formas de impedir a modificação de arquivos, incluindo: restrição de conteúdo a arquivos e proibindo a opção de fazer o download, imprimir ou copiar .
Tornar os arquivos somente leitura com as restrições de conteúdo do Drive
Você pode adicionar uma restrição de conteúdo a um arquivo do Google Drive para impedir que os usuários fazendo o seguinte:
- Modificar o título
- Fazer edições de conteúdo
- Como fazer upload de uma revisão
- Adicionar ou modificar comentários
A aplicação de restrições de conteúdo é um mecanismo que permite que o conteúdo de um O item do Drive será definido como somente leitura sem alterar a permissões de acesso. Isso significa não uma restrição de acesso. Embora os usuários não possam modificar o conteúdo do arquivo, outras operações ainda são permitidas com base no nível de acesso (por exemplo, um usuário com o acesso para editar ainda pode mover um item ou alterar as configurações de compartilhamento dele).
Para adicionar ou remover uma restrição de conteúdo em um arquivo no Drive, um usuário
precisam ter o conjunto de dados
permissões. Para um arquivo ou uma pasta no
"Meu Drive" ou um drive compartilhado com
capabilities.canModifyEditorContentRestriction
, você precisa ter role=writer
atribuídas. Para um arquivo ou uma pasta no Meu Drive ou em um drive compartilhado com
uma restrição de conteúdo ownerRestricted
, você precisa ser o proprietário do arquivo ou ter
role=organizer
. Para acessar um item com restrição de conteúdo, os usuários devem ter
role=reader
ou superior. Para uma lista completa de funções, consulte Funções e
do Cloud Storage. Para mudar as permissões de um arquivo, consulte
Mudar permissões.
É possível usar o campo booleano contentRestrictions.readOnly
na
Recurso files
a ser definido
uma restrição de conteúdo. Definir uma restrição de conteúdo para um item
substitui o atual.
Cenários de restrições de conteúdo
Uma restrição de conteúdo em um item do Drive indica aos usuários que o conteúdos não devem ser alterados. Isso pode acontecer por alguns dos seguintes motivos:
- Pausar o trabalho em um documento colaborativo durante os períodos de revisão ou auditoria.
- Definir um item para um estado finalizado, como aprovado.
- Evitar alterações durante uma reunião sensível.
- Proibir mudanças externas em fluxos de trabalho gerenciados por sistemas automatizados.
- Restringir edições feitas pelo Google Apps Script e por complementos do Google Workspace.
- Como evitar edições acidentais em um documento.
Observe que, embora as restrições de conteúdo ajudam a gerenciar o conteúdo, elas não são destinado a impedir que usuários com permissões suficientes continuem a trabalhar em uma do item de linha. Além disso, não é uma forma de criar um registro imutável. As restrições de conteúdo do Drive são mutáveis. Portanto, em um item não garante que ele nunca será alterado.
Gerenciar arquivos com restrições de conteúdo
Documentos, Planilhas e Apresentações Google, bem como todos os outros arquivos, podem conter restrições de conteúdo.
Uma restrição de conteúdo em um item impede alterações no título e no conteúdo dele, incluindo:
- Comentários e sugestões (nos apps Documentos, Planilhas, Apresentações e arquivos binários)
- Revisões de um arquivo binário
- Texto e formatação no app Documentos
- textos ou fórmulas no Planilhas, um layout do Planilhas, e instâncias no Planilhas
- Todo o conteúdo das Apresentações Google, bem como a ordem e o número desliza,
Certos tipos de arquivo não podem ter uma restrição de conteúdo. Vejas alguns exemplos:
- Formulários Google
- Google Sites
- Desenhos Google
- Atalhos e atalhos de terceiros. Para mais informações, consulte Criar um arquivo de atalho para o conteúdo armazenado por seu app e Crie um atalho para um Arquivo do Drive.
Adicionar uma restrição de conteúdo
Para adicionar uma restrição ao conteúdo do arquivo, use o
método files.update
com o
Campo contentRestrictions.readOnly
definido como true
. Adicione um reason
opcional para
por que você está adicionando a restrição, como "Contrato finalizado". O seguinte
exemplo de código mostra como adicionar uma restrição de conteúdo:
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;
}
}
Substitua FILE_ID pelo fileId
do arquivo que você quer.
modificar.
Quando você executa o exemplo de código, o conteúdo do arquivo é restrito e um símbolo de bloqueio (interface de usuário do Google Drive (UI). A agora é somente leitura.
) aparece ao lado do nome do arquivo em aRemover uma restrição de conteúdo
Para remover uma restrição de conteúdo do arquivo, use o método files.update
com o
O campo contentRestrictions.readOnly
foi definido como false
. O exemplo de código a seguir
mostra como remover uma restrição de conteúdo:
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;
}
}
Substitua FILE_ID pelo fileId
do arquivo que você quer.
modificar.
Quando você executa o exemplo de código, o conteúdo do arquivo não é mais restrito.
Você também pode usar a interface do Drive para remover uma restrição de conteúdo e permitir a edição de conteúdo, desde que você tenha as permissões corretas. Existem duas para fazer isso:
No Drive, clique com o botão direito do mouse no arquivo com restrição de conteúdo e Clique em Desbloquear
.Abra o arquivo com uma restrição de conteúdo e clique em (modo bloqueado) > Desbloqueie o arquivo.
Verificar se há uma restrição de conteúdo
Para verificar se há uma restrição de conteúdo, use o
método files.get
com o
Campo retornado contentRestrictions
. O exemplo de código a seguir mostra como
Verificar o status de uma restrição de conteúdo:
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;
}
}
Substitua FILE_ID pelo fileId
do arquivo que você quer.
verificação.
Quando você executa o exemplo de código, o método retorna uma
ContentRestriction
recurso, se houver.
Adicionar uma restrição de conteúdo que só o proprietário do arquivo pode modificar
Para adicionar uma restrição de conteúdo de arquivo para que apenas os proprietários possam ativar/desativar o mecanismo,
use o método files.update
com
o campo booleano contentRestrictions.ownerRestricted
definido como true
. A
este exemplo de código mostra como adicionar uma restrição de conteúdo para proprietários de arquivos
:
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;
}
}
Substitua FILE_ID pelo fileId
do arquivo que você quer.
modificar.
Quando você executa o exemplo de código, o conteúdo do arquivo é restrito e somente proprietários podem removê-lo. Se você for o proprietário do arquivo, um símbolo de bloqueio ativo ( Interface do usuário do Drive (UI). Se você não for o proprietário, o símbolo de cadeado estará esmaecido.
) vai aparecer ao lado do nome do arquivo naPara remover a sinalização ownerRestricted
, use o método files.update
com o
Campo contentRestrictions.ownerRestricted
definido como false
.
Recursos de restrição de conteúdo
Um recurso files
contém um
coleção de campos capabilities
booleanos usados para indicar se uma ação
que pode ser executada em um arquivo.
As restrições de conteúdo contêm o seguinte capabilities
:
capabilities.canModifyEditorContentRestriction
: se o usuário atual adicionar ou modificar uma restrição de conteúdo.capabilities.canModifyOwnerContentRestriction
: se o usuário atual pode adicionar ou modificar uma restrição de conteúdo do proprietário.capabilities.canRemoveContentRestriction
: se o usuário atual pode remova a restrição de conteúdo aplicada (se houver).
Para mais informações, consulte Recursos.
Para um exemplo de recuperação do arquivo capabilities
, consulte Verificar usuário
do Google Cloud.
Impedir que os usuários façam o download, imprimam ou copiem o arquivo
Você pode limitar a forma como os usuários com as permissões role=commenter
ou role=reader
podem
fazer o download, imprimir e copiar arquivos no Drive;
Documentos, Planilhas e Apresentações.
Para remover as opções de fazer o download, imprimir e copiar arquivos, use o
método files.update
com o
Campo booleano copyRequiresWriterPermission
definido como true
.