Interfejs Google Drive API obsługuje kilka sposobów zapobiegania modyfikowaniu plików, w tym ograniczenie zawartości pliku i zablokowanie możliwości pobierania, drukowania lub kopiowania plików.
Ustawianie plików jako tylko do odczytu za pomocą ograniczeń treści na Dysku
Możesz dodać ograniczenie treści do pliku na Dysku Google, aby uniemożliwić użytkownikom:
- Zmiana tytułu
- Wprowadzanie zmian w treściach
- Przesyłanie wersji
- dodawanie i modyfikowanie komentarzy,
Ograniczenie treści nie jest ograniczeniem dostępu. Użytkownicy nie mogą modyfikować zawartości pliku, ale inne operacje są nadal dozwolone w zależności od poziomu dostępu. Na przykład użytkownik z dostępem do edycji może nadal przenosić element lub zmieniać jego ustawienia udostępniania.
Aby dodać lub usunąć ograniczenie dotyczące treści w pliku na Dysku, użytkownik musi mieć odpowiednie permissions
. W przypadku pliku lub folderu na Moim dysku lub na dysku współdzielonym z capabilities.canModifyEditorContentRestriction
musisz mieć przypisane uprawnienia role=writer
. W przypadku pliku lub folderu na Moim dysku lub na dysku współdzielonym z ownerRestricted
ograniczeniem treści musisz być właścicielem pliku lub mieć role=organizer
. Aby wyświetlić produkt z ograniczeniem treści, użytkownicy muszą mieć ukończone role=reader
lat. Pełną listę ról znajdziesz w artykule Role i uprawnienia. Aby zaktualizować uprawnienia do pliku, zapoznaj się z artykułem Aktualizowanie uprawnień.
Aby ustawić ograniczenie treści, możesz użyć pola logicznego contentRestrictions.readOnly
w zasobie files
. Pamiętaj, że ustawienie ograniczenia treści w przypadku produktu zastępuje dotychczasowe ograniczenie.
Scenariusze ograniczeń treści
Ograniczenie treści dotyczące elementu na Dysku sygnalizuje użytkownikom, że zawartości nie należy zmieniać. Może to być spowodowane jedną z tych przyczyn:
- wstrzymywanie pracy nad dokumentem, nad którym pracujesz wspólnie z innymi osobami, w okresach przeglądu lub audytu;
- Ustawienie elementu w stanie końcowym, np. zatwierdzonym.
- Zapobieganie zmianom podczas poufnego spotkania.
- Zakaz wprowadzania zmian zewnętrznych w przypadku przepływów pracy obsługiwanych przez systemy automatyczne.
- Ograniczanie edycji przez Apps Script i dodatki do Google Workspace.
- Unikanie przypadkowych zmian w dokumencie.
Pamiętaj jednak, że ograniczenia treści mogą pomóc w zarządzaniu treściami, ale nie mają na celu uniemożliwienia użytkownikom z odpowiednimi uprawnieniami dalszej pracy nad elementem. Nie jest to też sposób na utworzenie niezmienialnego rekordu. Ograniczenia dotyczące treści na Dysku można zmieniać, więc ograniczenie dotyczące treści w przypadku elementu nie gwarantuje, że element nigdy się nie zmieni.
Zarządzanie plikami z ograniczeniami dotyczącymi treści
Dokumenty, Arkusze i Prezentacje Google, a także wszystkie inne pliki mogą zawierać ograniczenia dotyczące treści.
Ograniczenie treści w przypadku produktu uniemożliwia wprowadzanie zmian w jego tytule i treści, w tym:
- komentarze i sugestie (w Dokumentach, Arkuszach, Prezentacjach i plikach binarnych);
- Wersje pliku binarnego
- Tekst i formatowanie w Dokumentach
- tekst lub formuły w Arkuszach, układ Arkuszy i instancje w Arkuszach;
- wszystkie treści w Prezentacjach Google, a także kolejność i liczba slajdów;
Niektóre typy plików nie mogą zawierać ograniczeń dotyczących treści. Oto kilka przykładów:
- Formularze Google
- Witryny Google
- Rysunki Google
- skróty i skróty innych firm; Więcej informacji znajdziesz w artykułach Tworzenie pliku skrótu do treści przechowywanych przez aplikację i Tworzenie skrótu do pliku na Dysku.
Dodawanie ograniczenia treści
Aby dodać ograniczenie dotyczące treści pliku, użyj metody
files.update
z polem
contentRestrictions.readOnly
ustawionym na true
. Dodaj opcjonalny reason
, aby podać powód wprowadzenia ograniczenia, np. „Podpisano umowę”. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści:
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;
}
}
Zastąp symbol FILE_ID symbolem fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik będzie miał ograniczenia dostępu, a obok nazwy pliku w interfejsie Dysku Google pojawi się symbol blokady ( ). Plik jest teraz tylko do odczytu.
Usuwanie ograniczenia treści
Aby usunąć ograniczenie dotyczące treści pliku, użyj metody files.update
z polem contentRestrictions.readOnly
ustawionym na false
. Poniższy przykładowy kod pokazuje, jak usunąć ograniczenie treści:
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;
}
}
Zastąp symbol FILE_ID symbolem fileId
pliku, który chcesz zmodyfikować.
Po uruchomieniu przykładowego kodu plik nie będzie już zawierać treści podlegających ograniczeniom.
Możesz też użyć interfejsu Dysku, aby usunąć ograniczenie treści i zezwolić na edytowanie treści (pod warunkiem, że masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:
Na Dysku kliknij prawym przyciskiem myszy plik z ograniczeniem treści i wybierz Odblokuj
.Rysunek 2. Usuwanie ograniczeń dotyczących treści pliku z listy plików na Dysku. Otwórz plik z ograniczeniem treści i kliknij (Tryb zablokowany)> Odblokuj plik.
Rysunek 3. Usuń ograniczenie dotyczące treści pliku w dokumencie.
Sprawdzanie ograniczeń treści
Aby sprawdzić, czy na treści nałożono ograniczenia, użyj metody
files.get
z polem
contentRestrictions
. Poniższy przykładowy kod pokazuje, jak sprawdzić stan ograniczenia treści:
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;
}
}
Zastąp symbol FILE_ID symbolem fileId
pliku, który chcesz sprawdzić.
Po uruchomieniu przykładowego kodu metoda zwraca zasób ContentRestriction
, jeśli jest dostępny.
Dodawanie ograniczenia treści, które może modyfikować tylko właściciel pliku
Aby dodać ograniczenie dotyczące treści pliku, tak aby tylko właściciele plików mogli włączać i wyłączać mechanizm, użyj metody files.update
z polem logicznym contentRestrictions.ownerRestricted
ustawionym na true
. Poniższy przykładowy kod pokazuje, jak dodać ograniczenie treści tylko dla właścicieli plików:
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;
}
}
Zastąp symbol FILE_ID symbolem fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik zostanie objęty ograniczeniami dotyczącymi treści i tylko właściciele pliku będą mogli go usunąć. Jeśli jesteś właścicielem pliku, obok nazwy pliku w interfejsie Dysku pojawi się aktywny symbol blokady ( ). Jeśli nie jesteś właścicielem, symbol blokady jest przyciemniony.
Aby usunąć flagę ownerRestricted
, użyj metody files.update
z polem contentRestrictions.ownerRestricted
ustawionym na false
.
Możliwości ograniczania treści
Zasób files
zawiera zbiór pól logicznychcapabilities
, które wskazują, czy można wykonać działanie na pliku.
Ograniczenia treści zawierają te capabilities
:
capabilities.canModifyEditorContentRestriction
: czy bieżący użytkownik może dodawać lub modyfikować ograniczenia treści.capabilities.canModifyOwnerContentRestriction
: czy bieżący użytkownik może dodać lub zmodyfikować ograniczenie treści właściciela.capabilities.canRemoveContentRestriction
: czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli występuje).
Więcej informacji znajdziesz w artykule Omówienie możliwości plików.
Przykład pobierania pliku capabilities
znajdziesz w artykule Pobieranie możliwości pliku.
Uniemożliwianie użytkownikom pobierania, drukowania i kopiowania pliku
Możesz ograniczyć sposoby pobierania, drukowania i kopiowania plików przez użytkowników na Dysku, w Dokumentach, Arkuszach i Prezentacjach.
Aby określić, czy użytkownik może zmienić ograniczenia pobierania pliku zastosowane przez właściciela lub organizatora, sprawdź pole logiczne capabilities.canChangeItemDownloadRestriction
. Jeśli zasada capabilities.canChangeItemDownloadRestriction
ma wartość true
, do pliku można zastosować ograniczenia pobierania. Więcej informacji znajdziesz w artykule Informacje o możliwościach plików.
Aby zastosować ograniczenia pobierania do pliku, ustaw pole downloadRestrictions
za pomocą metody files.update
. Pole możesz ustawić za pomocą obiektu DownloadRestrictionsMetadata
.
Obiekt DownloadRestrictionsMetadata
ma 2 pola: itemDownloadRestriction
i effectiveDownloadRestrictionWithContext
. Oba pola są czytelne, ale można ustawić tylko pole itemDownloadRestriction
. Pole itemDownloadRestriction
zwraca obiekt DownloadRestriction
. Obiekt DownloadRestriction
zawiera 2 osobne pola logiczne: restrictedForReaders
i restrictedForWriters
.
Podczas ustawiania pola itemDownloadRestriction
ograniczenie pobierania pliku jest stosowane bezpośrednio przez właściciela lub organizatora. Nie uwzględnia ustawień dysku współdzielonego ani reguł zapobiegania utracie danych (DLP). Więcej informacji znajdziesz w artykule Informacje o DLP.
Jeśli zaktualizujesz pole itemDownloadRestriction
, ustawiając pole restrictedForWriters
na true
, oznacza to, że restrictedForReaders
ma wartość true
. Podobnie ustawienie restrictedForWriters
na true
i restrictedForReaders
na false
jest równoznaczne z ustawieniem zarówno restrictedForWriters
, jak i restrictedForReaders
na true
.
W przypadku pola effectiveDownloadRestrictionWithContext
ograniczenie pobierania jest stosowane do pliku i uwzględnia wszystkie ustawienia ograniczeń oraz reguły DLP.
Pole effectiveDownloadRestrictionWithContext
może mieć wartość restrictedForWriters
lub restrictedForReaders
. Jeśli w ustawieniach pliku, dysku współdzielonego lub regułach DLP (w tym tych z kontekstem) istnieją ustawienia ograniczające pobieranie lub kopiowanie dla odpowiednich ról, wartość jest ustawiona na true
, w przeciwnym razie jest to false
.
Zgodność wsteczna
Zalecamy używanie obiektu DownloadRestriction
, aby określać, jak użytkownicy mogą pobierać, drukować i kopiować pliki.
Jeśli chcesz używać pola logicznego copyRequiresWriterPermission
, funkcje odczytu i zapisu w tym polu są różne.
Pobrana wartość pola copyRequiresWriterPermission
odzwierciedla, czy użytkownicy z uprawnieniami role=commenter
lub role=reader
mogą pobierać, drukować lub kopiować pliki na Dysku. Wartość pola odzwierciedla kombinację ustawień plików, ustawień dysku współdzielonego lub reguł DLP. Nie obejmuje to jednak oceny kontekstu w przypadku reguł DLP.
Ustawienie pola copyRequiresWriterPermission
na false
powoduje zaktualizowanie pól restrictedForWriters
i restrictedForReaders
do wartości false
. Oznacza to, że ustawienia ograniczeń pobierania lub kopiowania zostaną usunięte w przypadku wszystkich użytkowników.
Pola, które kontrolują funkcje pobierania, drukowania i kopiowania
W tabeli poniżej znajdziesz listę pól zasobu files
, które wpływają na funkcje pobierania, drukowania i kopiowania:
Pole | Opis | Wersja |
---|---|---|
capabilities.canCopy |
Określa, czy bieżący użytkownik może skopiować plik. | wersje 2 i 3 |
capabilities.canDownload |
Określa, czy bieżący użytkownik może pobrać plik. | wersje 2 i 3 |
capabilities.canChangeCopyRequiresWriterPermission |
Informacja, czy bieżący użytkownik może zmienić copyRequiresWriterPermission ograniczenie pliku. |
wersje 2 i 3 |
capabilities.canChangeItemDownloadRestriction |
Informacja, czy bieżący użytkownik może zmienić ograniczenie pobierania pliku. | Tylko wersja 3 |
copyRequiresWriterPermission |
Określa, czy opcje kopiowania, drukowania i pobierania tego pliku mają być wyłączone dla czytelników i komentujących. | wersje 2 i 3 |
downloadRestrictions |
Ograniczenia pobierania zastosowane w przypadku pliku. | Tylko wersja 3 |