Google Drive API mendukung beberapa cara untuk mencegah modifikasi file, termasuk pembatasan konten file dan melarang opsi untuk mendownload, mencetak, atau menyalin file.
Membuat file menjadi hanya baca dengan pembatasan konten Drive
Anda dapat menambahkan batasan konten ke file Google Drive untuk mencegah pengguna melakukan hal berikut:
- Mengubah judul
- Melakukan pengeditan konten
- Mengupload revisi
- Menambahkan atau mengubah komentar
Menerapkan batasan konten adalah mekanisme yang memungkinkan konten item Drive dijadikan hanya-baca tanpa mengubah izin akses item. Artinya, ini bukan pembatasan akses. Meskipun pengguna tidak dapat mengubah konten file, operasi lainnya masih diizinkan berdasarkan tingkat akses (misalnya, pengguna dengan akses edit masih dapat memindahkan item atau mengubah setelan berbaginya).
Untuk menambahkan atau menghapus batasan konten pada file di Drive, pengguna harus memiliki izin terkait. Untuk file atau folder di
Drive Saya atau drive bersama dengan
capabilities.canModifyEditorContentRestriction
, Anda harus memiliki role=writer
yang ditetapkan. Untuk file atau folder di Drive Saya atau drive bersama dengan
batasan konten ownerRestricted
, Anda harus memiliki file atau memiliki
role=organizer
. Untuk melihat item dengan batasan konten, pengguna harus memiliki
role=reader
atau yang lebih tinggi. Untuk mengetahui daftar lengkap peran, lihat Peran &
izin. Untuk mengubah izin pada file, lihat
Mengubah izin.
Anda dapat menggunakan kolom boolean contentRestrictions.readOnly
pada
resource files
untuk menetapkan
batasan konten. Perlu diperhatikan bahwa menetapkan batasan konten pada item akan menimpa item yang sudah ada.
Skenario untuk pembatasan konten
Batasan konten pada item Drive memberi tahu pengguna bahwa konten tidak boleh diubah. Hal ini dapat terjadi karena beberapa alasan berikut:
- Menjeda pekerjaan pada dokumen kolaboratif selama periode peninjauan atau audit.
- Menyetel item ke status akhir, seperti disetujui.
- Mencegah perubahan selama rapat sensitif.
- Melarang perubahan eksternal untuk alur kerja yang ditangani oleh sistem otomatis.
- Membatasi pengeditan dengan Google Apps Script dan Add-on Google Workspace.
- Menghindari pengeditan dokumen yang tidak disengaja.
Perhatikan bahwa meskipun dapat membantu mengelola konten, batasan konten ini tidak dimaksudkan untuk mencegah pengguna dengan izin yang memadai untuk terus bekerja pada item. Selain itu, langkah ini bukan cara untuk membuat data yang tidak dapat diubah. Batasan konten Drive dapat diubah, sehingga batasan konten pada item tidak menjamin bahwa item tidak akan pernah berubah.
Mengelola file dengan batasan konten
Google Dokumen, Google Spreadsheet, dan Google Slide, serta semua file lainnya, dapat berisi batasan konten.
Batasan konten pada item mencegah perubahan pada judul dan kontennya, termasuk:
- Komentar dan saran (pada Dokumen, Spreadsheet, Slide, dan file biner)
- Revisi file biner
- Teks dan pemformatan di Dokumen
- Teks atau formula di Sheets, tata letak Sheets, dan {i>instance<i} di Sheets
- Semua konten di Slide, serta urutan dan jumlah slide
Jenis file tertentu tidak dapat berisi batasan konten. Beberapa contohnya adalah:
- Google Formulir
- Google Sites
- Google Gambar
- Pintasan dan pintasan pihak ketiga. Untuk mengetahui informasi selengkapnya, lihat Membuat file pintasan ke konten yang disimpan oleh aplikasi Anda dan Membuat pintasan ke file Drive.
Menambahkan batasan konten
Untuk menambahkan batasan konten file, gunakan metode files.update
dengan kolom contentRestrictions.readOnly
yang ditetapkan ke true
. Tambahkan reason
opsional untuk alasan Anda menambahkan batasan, seperti "Kontrak diselesaikan". Contoh kode berikut menunjukkan cara menambahkan batasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
file yang ingin Anda
ubah.
Saat Anda menjalankan kode contoh, file tersebut akan dibatasi konten dan simbol gembok (antarmuka pengguna (UI) Google Drive. Kini, file tersebut bersifat hanya baca.
) akan muncul di samping nama file dalamMenghapus pembatasan konten
Untuk menghapus batasan konten file, gunakan metode files.update
dengan kolom contentRestrictions.readOnly
ditetapkan ke false
. Contoh kode berikut
menunjukkan cara menghapus batasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
file yang ingin Anda
ubah.
Saat Anda menjalankan kode contoh, file tidak lagi dibatasi konten.
Anda juga dapat menggunakan UI Drive untuk menghapus batasan konten dan mengizinkan pengeditan konten (asalkan Anda memiliki izin yang benar). Ada dua opsi untuk melakukannya:
Di Drive, klik kanan file dengan pembatasan konten, lalu klik Buka kunci
.Buka file yang memiliki batasan konten, lalu klik (Mode terkunci) > Buka kunci file.
Memeriksa pembatasan konten
Untuk memeriksa batasan konten, gunakan
metode files.get
dengan
kolom contentRestrictions
yang ditampilkan. Contoh kode berikut menunjukkan cara
memeriksa status pembatasan konten:
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;
}
}
Ganti FILE_ID dengan fileId
file yang ingin Anda
periksa.
Saat Anda menjalankan kode contoh, metode ini akan menampilkan resource
ContentRestriction
jika ada.
Menambahkan batasan konten yang hanya dapat diubah oleh pemilik file
Untuk menambahkan batasan konten file sehingga hanya pemilik file yang dapat beralih mekanisme,
gunakan metode files.update
dengan
kolom boolean contentRestrictions.ownerRestricted
ditetapkan ke true
. Contoh
kode berikut menunjukkan cara menambahkan batasan konten untuk pemilik file
saja:
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;
}
}
Ganti FILE_ID dengan fileId
file yang ingin Anda
ubah.
Saat Anda menjalankan kode contoh, konten file akan dibatasi dan hanya pemilik file yang dapat menghapusnya. Jika Anda adalah pemilik file, simbol kunci aktif ( antarmuka pengguna (UI) Drive. Jika Anda bukan pemilik, simbol gembok akan diredupkan.
) akan muncul di samping nama file dalamUntuk menghapus flag ownerRestricted
, gunakan metode files.update
dengan kolom contentRestrictions.ownerRestricted
ditetapkan ke false
.
Kemampuan pembatasan konten
Resource files
berisi kumpulan kolom boolean capabilities
yang digunakan untuk menunjukkan apakah suatu tindakan dapat dilakukan pada file atau tidak.
Batasan konten berisi capabilities
berikut:
capabilities.canModifyEditorContentRestriction
: Apakah pengguna saat ini dapat menambahkan atau mengubah batasan konten.capabilities.canModifyOwnerContentRestriction
: Apakah pengguna saat ini dapat menambahkan atau mengubah pembatasan konten pemilik.capabilities.canRemoveContentRestriction
: Apakah pengguna saat ini dapat menghapus pembatasan konten yang diterapkan (jika ada).
Untuk mengetahui informasi selengkapnya, lihat Kemampuan.
Untuk contoh pengambilan file capabilities
, lihat Memverifikasi izin
pengguna.
Mencegah pengguna mendownload, mencetak, atau menyalin file Anda
Anda dapat membatasi cara pengguna dengan izin role=commenter
atau role=reader
dapat
mendownload, mencetak, dan menyalin file dalam Drive,
Dokumen, Spreadsheet, dan Slide.
Untuk menghapus opsi mendownload, mencetak, dan menyalin file, gunakan
metode files.update
dengan
kolom boolean copyRequiresWriterPermission
ditetapkan ke true
.