Interfejs API Dysku Google umożliwia zapobieganie modyfikowaniu plików na kilka sposobów, między innymi przez ograniczanie treści plików i zakazywanie ich pobierania, drukowania i kopiowania.
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:
- Modyfikowanie tytułu
- wprowadzać poprawki w treściach;
- Przesyłanie wersji
- dodawanie i modyfikowanie komentarzy,
Zastosowanie ograniczeń treści to mechanizm, który pozwala ustawić treści elementu w Drive jako tylko do odczytu bez zmiany uprawnień dostępu. Oznacza to, że nie jest to ograniczenie dostępu. Użytkownicy nie mogą modyfikować zawartości pliku, ale inne operacje są nadal dozwolone na podstawie poziomu dostępu (na przykład użytkownik z uprawnieniami do edycji może nadal przenosić element lub zmieniać jego ustawienia udostępniania).
Aby dodać lub usunąć ograniczenie treści w pliku na Dysku, użytkownik musi mieć odpowiednie uprawnienia. W przypadku pliku lub folderu na Moim dysku lub dysku współdzielonym z uprawnieniami capabilities.canModifyEditorContentRestriction
musisz mieć przypisane uprawnienia role=writer
. W przypadku pliku lub folderu na Moim dysku lub dysku współdzielonym z ograniczeniem treści ownerRestricted
musisz być właścicielem pliku lub mieć uprawnienia role=organizer
. Aby wyświetlić element z ograniczeniem treści, użytkownicy muszą mieć uprawnienia role=reader
lub wyższe. Pełną listę ról znajdziesz w artykule Role i uprawnienia. Aby zmienić uprawnienia do pliku, przeczytaj artykuł Zmienianie uprawnień.
Aby ustawić ograniczenie treści, możesz użyć pola logicznego contentRestrictions.readOnly
w zasobie files
. Pamiętaj, że ustawienie ograniczenia treści dla danego produktu zastąpi dotychczasowe.
Scenariusze dotyczące ograniczeń treści
Ograniczenie treści w elemencie na Dysku informuje użytkowników, że zawartość nie może być zmieniana. Może się tak zdarzyć z kilku powodów:
- Wstrzymanie pracy nad dokumentem współdzielonym w okresie sprawdzania lub weryfikacji.
- Ustawienie elementu w stanie końcowym, np. zatwierdzonym.
- zapobieganie zmianom podczas spotkania z poufnymi informacjami.
- Zabranianie wprowadzania zmian zewnętrznych w przypadku procesów obsługiwanych przez systemy automatyczne.
- ograniczanie możliwości wprowadzania zmian przez Google Apps Script i dodatki do Google Workspace.
- unikanie przypadkowych zmian w dokumencie.
Pamiętaj jednak, że chociaż ograniczenia treści mogą ułatwiać zarządzanie treściami, nie mają na celu uniemożliwienie użytkownikom z wystarczającymi uprawnieniami dalszej pracy nad elementem. Nie jest to też sposób na utworzenie niezmiennego rekordu. Ograniczenia treści na Dysku można zmieniać, więc ograniczenie treści dotyczące elementu nie gwarantuje, że element nigdy się nie zmieni.
Zarządzanie plikami z ograniczeniami treści
Dokumenty, Arkusze i Prezentacje Google, a także wszystkie inne pliki mogą zawierać ograniczenia treści.
Ograniczenie treści w przypadku elementu 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 w Arkuszach oraz wystąpienia w Arkuszach.
- cała zawartość slajdów, a także ich kolejność i liczba;
Niektóre typy plików nie mogą zawierać ograniczeń 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 treści pliku, użyj metody files.update
z polem contentRestrictions.readOnly
ustawionym na true
. Opcjonalnie dodaj reason
, aby wyjaśnić, dlaczego dodajesz ograniczenie, np. „Zakończono 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 FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, dostęp do pliku będzie ograniczony, a obok jego nazwy w interfejsie Dysku Google pojawi się symbol kłódki ( ). Plik jest teraz tylko do odczytu.
Usuwanie ograniczenia treści
Aby usunąć ograniczenie treści pliku, użyj metody files.update
, ustawiając pole contentRestrictions.readOnly
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 FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik nie będzie już podlegał ograniczeniom treści.
Możesz też użyć interfejsu Dysku, aby usunąć ograniczenie treści i zezwolić na edytowanie treści (o ile masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:
Na Dysku kliknij plik z ograniczeniem treści prawym przyciskiem myszy i wybierz Odblokuj
.Otwórz plik z ograniczeniem treści i kliknij (Tryb zablokowany) > Odblokuj plik.
Sprawdź, czy nie ma ograniczeń dotyczących treści
Aby sprawdzić, czy występują ograniczenia treści, użyj metody files.get
z polem zwracanym 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 FILE_ID wartością fileId
pliku, który chcesz sprawdzić.
Po uruchomieniu przykładowego kodu metoda zwraca zasób ContentRestriction
, jeśli jest obecny.
Dodaj ograniczenie treści, które może zmienić tylko właściciel pliku
Aby dodać ograniczenie treści pliku, tak aby tylko właściciele plików mogli włą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 FILE_ID wartością fileId
pliku, który chcesz zmodyfikować.
Gdy uruchomisz przykładowy kod, plik będzie objęty ograniczeniem treści i tylko właściciele plików będą mogli go usunąć. Jeśli jesteś właścicielem pliku, obok jego nazwy w interfejsie Dysku (UI) pojawi się symbol aktywnej blokady ( ). Jeśli nie jesteś właścicielem, symbol kłódki będzie wygaszony.
Aby usunąć oznaczenie ownerRestricted
, użyj metody files.update
, ustawiając pole contentRestrictions.ownerRestricted
na false
.
Możliwości dotyczące ograniczeń treści
Zasób files
zawiera zbiór pól logicznych capabilities
, które wskazują, czy można wykonać działanie na pliku.
Ograniczenia treści obejmują te capabilities
:
capabilities.canModifyEditorContentRestriction
: czy bieżący użytkownik może dodać lub zmodyfikować ograniczenie 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 sekcji Możliwości.
Przykład wyodrębniania pliku capabilities
znajdziesz w sekcji Weryfikowanie uprawnień użytkownika.
Uniemożliwianie użytkownikom pobierania, drukowania i kopiowania pliku
Możesz ograniczyć sposób pobierania, drukowania i kopiowania plików na Dysku, w Dokumentach, Arkuszach i Prezentacjach przez użytkowników z uprawnieniami role=commenter
lub role=reader
.
Aby usunąć opcje pobierania, drukowania i kopiowania plików, użyj metody files.update
z ustawieniem pola logicznego copyRequiresWriterPermission
na true
.