Ochrona treści pliku

Interfejs Google Drive API pozwala na kilka sposobów zapobiegania modyfikacjom plików, na przykład przez ograniczenie ich zawartości oraz zakaz pobierania, drukowania lub kopiowania plików.

Udostępnianie 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
  • Edytowanie treści
  • Przesyłanie wersji
  • Dodawanie i modyfikowanie komentarzy

Stosowanie ograniczeń treści to mechanizm, dzięki któremu zawartość elementu na Dysku jest dostępna tylko do odczytu bez zmiany uprawnień dostępu do tego elementu. Nie jest to ograniczenie dostępu. Chociaż użytkownicy nie mogą modyfikować zawartości pliku, inne operacje są nadal dozwolone w zależności od poziomu dostępu (np. użytkownik z uprawnieniami do edycji może nadal przenieść element lub zmienić jego ustawienia udostępniania).

Aby dodać lub usunąć ograniczenie treści w pliku na Dysku, użytkownik musi mieć powiązane uprawnienia. W przypadku pliku lub folderu na Moim dysku albo dysku współdzielonego z funkcją capabilities.canModifyEditorContentRestriction musisz mieć przypisaną rolę role=writer. W przypadku pliku lub folderu na Moim dysku albo dysku współdzielonego z ograniczeniem treści ownerRestricted musisz być właścicielem tego pliku lub mieć role=organizer. Aby wyświetlić element objęty ograniczeniem treści, użytkownicy muszą mieć co najmniej role=reader. Pełną listę ról znajdziesz w sekcji Role i uprawnienia. Aby dowiedzieć się, jak zmienić uprawnienia do pliku, zobacz Zmienianie uprawnień.

Aby ustawić ograniczenie treści, możesz użyć pola wartości logicznej contentRestrictions.readOnly w zasobie files. Pamiętaj, że ustawienie ograniczenia treści dla elementu zastępuje dotychczasowe ograniczenie.

Scenariusze ograniczeń treści

Ograniczenie treści elementu na Dysku informuje użytkowników, że treści nie należy zmieniać. Oto kilka możliwych przyczyn:

  • Wstrzymywanie pracy nad wspólnym dokumentem podczas kontroli lub kontroli.
  • Ustawienie ostatecznego stanu elementu, np. zatwierdzonego.
  • Zapobieganie zmianom podczas spotkania o charakterze wrażliwym
  • Uniemożliwianie wprowadzania zewnętrznych zmian w przepływach pracy obsługiwanych przez automatyczne systemy.
  • Ograniczanie możliwości edytowania przez skrypty Google Apps Script i dodatki do Google Workspace.
  • Zapobieganie przypadkowemu edytowaniu dokumentu

Ograniczenia treści mogą pomóc w zarządzaniu treścią, ale nie uniemożliwiają użytkownikom z odpowiednimi uprawnieniami kontynuowania pracy nad danym elementem. Nie można w ten sposób utworzyć rekordu stałego. Ograniczenia treści na Dysku można zmieniać, więc ograniczenie treści elementu nie gwarantuje, że element nigdy się nie zmieni.

Zarządzanie plikami objętymi ograniczeniami treści

Dokumenty, Arkusze i Prezentacje Google oraz wszystkie inne pliki mogą zawierać ograniczenia treści.

Ograniczenie treści elementu zapobiega zmianie jego tytułu i treści, w tym:

  • Komentarze i sugestie (w Dokumentach, Arkuszach, Prezentacjach i plikach binarnych)
  • Wersje pliku binarnego
  • Tekst i formatowanie w Dokumentach
  • tekst i formuły w Arkuszach, układzie Arkuszy oraz w instancjach
  • Wszystkie treści w Prezentacjach oraz kolejność i numer slajdów

Pewne typy plików nie mogą zawierać ograniczenia treści. Oto kilka przykładów:

Dodaj ograniczenie treści

Aby dodać ograniczenie treści pliku, użyj metody files.update z polem contentRestrictions.readOnly ustawionym na true. Dodaj opcjonalną właściwość reason, jeśli chcesz dodać ograniczenie, np. „Sfinalizowane umowa”. Z tego przykładowego kodu dowiesz się, 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ć.

Po uruchomieniu przykładowego kodu dostęp do pliku jest ograniczony, a w interfejsie Dysku Google obok jego nazwy pojawia się symbol blokady (). Plik jest teraz tylko do odczytu.

Plik z ograniczeniem treści na liście plików na Dysku.
Rysunek 1. Plik z ograniczeniem treści na liście plików na Dysku.

Usuwanie ograniczenia treści

Aby usunąć ograniczenie treści pliku, użyj metody files.update z polem contentRestrictions.readOnly ustawionym na false. Z tego przykładowego kodu dowiesz się, 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ć.

Po uruchomieniu przykładowego kodu treść pliku nie będzie już ograniczana.

W interfejsie Dysku możesz też usunąć ograniczenie treści i zezwolić na edytowanie treści (pod warunkiem, że masz odpowiednie uprawnienia). Możesz to zrobić na 2 sposoby:

  1. Na Dysku kliknij prawym przyciskiem myszy plik z ograniczeniem treści i wybierz Odblokuj .

    Usuń ograniczenie treści pliku z listy plików na Dysku.
    Rysunek 2. Usuń ograniczenie treści pliku z listy plików na Dysku.
  2. Otwórz plik z ograniczeniem treści i kliknij (Tryb blokady) > Odblokuj plik.

    Usuń ograniczenie treści pliku z dokumentu.
    Rysunek 3. Usuń ograniczenie treści pliku z dokumentu.

Sprawdź, czy nie ma ograniczeń treści

Aby sprawdzić ograniczenie treści, użyj metody files.get ze zwróconym polem contentRestrictions. Z poniższego przykładowego kodu dowiesz się, 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 dostępny).

Dodawanie ograniczenia treści, które może modyfikować tylko właściciel pliku

Aby dodać ograniczenie treści pliku, tak aby tylko właściciele plików mogli przełączać mechanizm, użyj metody files.update z polem wartości logicznej 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ć.

Po uruchomieniu przykładowego kodu dostęp do pliku jest ograniczony i tylko właściciele plików mogą go usunąć. Jeśli jesteś właścicielem pliku, obok jego nazwy w interfejsie Dysku pojawi się aktywny symbol blokady (). Jeśli nie jesteś właścicielem, symbol kłódki będzie wyszarzony.

Aby usunąć flagę ownerRestricted, użyj metody files.update z polem contentRestrictions.ownerRestricted ustawionym na false.

Funkcje ograniczeń treści

Zasób files zawiera zbiór pól logicznych capabilities, które określają, czy można wykonać działanie na pliku.

Ograniczenia treści obejmują te capabilities:

  • capabilities.canModifyEditorContentRestriction: określa, czy obecny użytkownik może dodać lub zmodyfikować ograniczenie treści.
  • capabilities.canModifyOwnerContentRestriction: określa, czy obecny użytkownik może dodać lub zmodyfikować ograniczenie treści właściciela.
  • capabilities.canRemoveContentRestriction: określa, czy bieżący użytkownik może usunąć zastosowane ograniczenie treści (jeśli jest obecne).

Więcej informacji znajdziesz w opisie uprawnień.

Przykład pobierania pliku capabilities znajdziesz w sekcji Weryfikowanie uprawnień użytkownika.

Blokowanie użytkownikom możliwości pobierania, drukowania i kopiowania Twojego pliku

Możesz ograniczyć sposób, w jaki użytkownicy z uprawnieniami role=commenter lub role=reader mogą pobierać, drukować i kopiować pliki na Dysku oraz w Dokumentach, Arkuszach i Prezentacjach.

Aby usunąć opcje pobierania, drukowania i kopiowania plików, użyj metody files.update z polem wartości logicznej copyRequiresWriterPermission ustawionym na true.