L'API Google Drive supporta diversi modi per impedire la modifica dei file, tra cui: limitazione dei contenuti dei file e vietare l'opzione di download, stampa o copia .
Impostare i file come di sola lettura con limitazioni dei contenuti di Drive
Puoi aggiungere una limitazione dei contenuti a un file di Google Drive per impedire agli utenti di: nel seguente modo:
- Modifica del titolo
- Modifiche ai contenuti
- Caricamento di una revisione
- Aggiunta o modifica di commenti
L'applicazione di limitazioni dei contenuti è un meccanismo che consente la visualizzazione dei contenuti di un L'elemento di Drive deve essere reso di sola lettura senza modificare il relativo accedere alle autorizzazioni. Ciò significa non è una limitazione di accesso. Gli utenti non possono modificare i contenuti del file, operazioni sono comunque consentite in base al livello di accesso (ad esempio, un utente con l'accesso in modifica può comunque spostare un elemento o modificarne le impostazioni di condivisione).
Per aggiungere o rimuovere una limitazione dei contenuti su un file in Drive, un utente
devono avere i valori associati
autorizzazioni. Per un file o una cartella in
Il mio Drive o un Drive condiviso con
capabilities.canModifyEditorContentRestriction
, devi avere role=writer
assegnati. Per un file o una cartella in Il mio Drive o su un Drive condiviso con
una limitazione dei contenuti di ownerRestricted
, devi essere il proprietario del file o avere
role=organizer
. Per visualizzare un elemento con una limitazione dei contenuti, gli utenti devono avere
role=reader
o superiore. Per un elenco completo dei ruoli, vedi Ruoli e
autorizzazioni. Per modificare le autorizzazioni per un file, vedi
Modificare le autorizzazioni.
Puoi utilizzare il campo booleano contentRestrictions.readOnly
nella
Risorsa files
da impostare
una limitazione dei contenuti. Tieni presente che l'impostazione di una limitazione dei contenuti
per un elemento
sovrascriverà quello esistente.
Scenari relativi alle limitazioni dei contenuti
Una limitazione dei contenuti di un elemento di Drive segnala agli utenti che contenuti non devono essere modificati. I motivi possono essere i seguenti:
- Sospensione del lavoro su un documento collaborativo durante i periodi di revisione o di controllo.
- Impostazione di un elemento sullo stato "Conclusa", ad esempio "Approvato".
- Impedire modifiche durante una riunione sensibile.
- Proibizione di modifiche esterne ai flussi di lavoro gestiti da sistemi automatici.
- Limitazione delle modifiche da parte di Google Apps Script e dei componenti aggiuntivi di Google Workspace.
- Evitare modifiche accidentali a un documento.
Tieni presente che sebbene le limitazioni dei contenuti contribuiscano alla gestione dei contenuti, ha lo scopo di impedire agli utenti con autorizzazioni sufficienti di continuare a lavorare su molto utile. Inoltre, non è un modo per creare un record immutabile. Poiché le limitazioni dei contenuti di Drive sono modificabili, di un elemento non garantisce che quell'elemento non venga mai modificato.
Gestire i file con limitazioni dei contenuti
Documenti Google, Fogli Google e Presentazioni Google, nonché tutti gli altri file, possono includere limitazioni dei contenuti.
Una limitazione dei contenuti di un elemento impedisce di modificare il titolo e i contenuti, tra cui:
- Commenti e suggerimenti (su Documenti, Fogli, slide e file binari).
- Revisioni di un file binario
- Testo e formattazione in Documenti
- Testo o formule in Fogli, un layout di Fogli, e istanze in Fogli
- Tutti i contenuti di Presentazioni, nonché l'ordine e il numero di slide
Alcuni tipi di file non possono includere una limitazione dei contenuti. Ecco alcuni esempi:
- Moduli Google
- Google Sites
- Disegni Google
- Scorciatoie e scorciatoie di terze parti. Per ulteriori informazioni, consulta la sezione Creare un del file di scorciatoia ai contenuti memorizzati dal tuo app e Crea una scorciatoia a un file di Drive.
Aggiungi una limitazione dei contenuti
Per aggiungere una limitazione dei contenuti dei file, utilizza la
files.update
con il metodo
Campo contentRestrictions.readOnly
impostato su true
. Aggiungi un elemento reason
facoltativo per
perché stai aggiungendo la limitazione, ad esempio "Contratto definitivo". Le seguenti
esempio di codice mostra come aggiungere una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il valore fileId
del file da modificare
modificare.
Quando esegui il codice campione, il file presenta limitazioni relative ai contenuti e mostra il simbolo di un lucchetto (interfaccia utente di Google Drive (UI). La è ora di sola lettura.
) viene visualizzato accanto al nome del file all'interno di l'Rimuovere una limitazione dei contenuti
Per rimuovere una limitazione dei contenuti di un file, utilizza il metodo files.update
con
Campo contentRestrictions.readOnly
impostato su false
. Il seguente esempio di codice
mostra come rimuovere una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il valore fileId
del file da modificare
modificare.
Quando esegui il codice campione, il file non è più soggetto a limitazioni per i contenuti.
Puoi anche utilizzare la UI di Drive per rimuovere una limitazione dei contenuti e consentire la modifica dei contenuti (se disponi delle autorizzazioni corrette). Esistono due metodi opzioni per farlo:
In Drive, fai clic con il tasto destro del mouse sul file con una limitazione dei contenuti e fai clic su Sblocca
.Apri il file con una limitazione dei contenuti e fai clic su (Modalità di blocco) > Sblocca file.
Verificare la presenza di una limitazione dei contenuti
Per verificare l'eventuale presenza di una limitazione dei contenuti, utilizza la
files.get
con il metodo
contentRestrictions
campo restituito. Il seguente esempio di codice mostra come
Controllare lo stato di una limitazione dei contenuti:
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;
}
}
Sostituisci FILE_ID con il valore fileId
del file da modificare
verifica.
Quando esegui il codice campione, il metodo restituisce un
ContentRestriction
risorsa, se presente.
Aggiungere una limitazione dei contenuti che solo il proprietario del file può modificare
Per aggiungere una limitazione dei contenuti dei file in modo che solo i proprietari dei file possano attivare/disattivare il meccanismo:
utilizza il metodo files.update
con
il campo booleano contentRestrictions.ownerRestricted
impostato su true
. La
l'esempio di codice riportato di seguito mostra come aggiungere una limitazione dei contenuti per i proprietari dei file
solo:
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;
}
}
Sostituisci FILE_ID con il valore fileId
del file da modificare
modificare.
Quando esegui il codice campione, il file è soggetto a limitazioni per i contenuti e solo il file i proprietari possono rimuoverla. Se sei il proprietario del file, viene visualizzato un simbolo di lucchetto attivo ( Interfaccia utente di Drive (UI). Se non sei il proprietario, il simbolo del lucchetto è attenuato.
) accanto al nome del file all'interno della sezionePer rimuovere il flag ownerRestricted
, utilizza il metodo files.update
con il
Campo contentRestrictions.ownerRestricted
impostato su false
.
Funzionalità relative alla limitazione dei contenuti
Una risorsa files
contiene un
raccolta di campi capabilities
booleani utilizzati per indicare se un'azione
che possono essere eseguiti su un file.
Le limitazioni dei contenuti includono i seguenti capabilities
:
capabilities.canModifyEditorContentRestriction
: indica se l'utente corrente può aggiungere o modificare una restrizione dei contenuti.capabilities.canModifyOwnerContentRestriction
: indica se l'utente corrente può aggiungere o modificare una limitazione dei contenuti per il proprietario.capabilities.canRemoveContentRestriction
: se l'utente corrente può rimuovi la restrizione dei contenuti applicata (se presente).
Per ulteriori informazioni, vedi Funzionalità.
Per un esempio di recupero del file capabilities
, consulta Verifica dell'utente
autorizzazioni.
Impedire agli utenti di scaricare, stampare o copiare il file
Puoi limitare il modo in cui gli utenti con autorizzazioni role=commenter
o role=reader
possono
scaricare, stampare e copiare file all'interno di Drive,
Documenti, Fogli e Presentazioni.
Per rimuovere le opzioni per scaricare, stampare e copiare i file, utilizza la
files.update
con il metodo
Campo booleano copyRequiresWriterPermission
impostato su true
.