Google Drive API mendukung beberapa cara untuk mencegah modifikasi file, termasuk pembatasan konten file dan melarang opsi untuk mendownload, mencetak, atau menyalin file.
Menjadikan file hanya baca dengan pembatasan konten Drive
Anda dapat menambahkan pembatasan konten ke file Google Drive untuk mencegah pengguna melakukan hal berikut:
- Mengubah judul
- Mengedit konten
- Mengupload revisi
- Menambahkan atau mengubah komentar
Pembatasan konten bukanlah pembatasan akses. Meskipun pengguna tidak dapat mengubah konten file, operasi lain tetap diizinkan, berdasarkan tingkat akses mereka. Misalnya, pengguna dengan akses edit masih dapat memindahkan item atau mengubah setelan berbagi item.
Untuk menambahkan atau menghapus pembatasan konten pada file di Drive, pengguna harus memiliki permissions
yang 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 tersebut atau memiliki role=organizer
. Untuk melihat item dengan pembatasan konten, pengguna harus memiliki
role=reader
atau yang lebih tinggi. Untuk melihat daftar lengkap peran, lihat Peran dan
izin. Untuk memperbarui izin pada file, lihat
Memperbarui izin.
Anda dapat menggunakan kolom boolean contentRestrictions.readOnly
pada resource files
untuk menetapkan pembatasan konten. Perhatikan bahwa menyetel batasan konten pada item akan menimpa batasan yang ada.
Skenario untuk batasan konten
Pembatasan konten pada item Drive memberi sinyal kepada pengguna bahwa konten tidak boleh diubah. Hal ini dapat terjadi karena beberapa alasan berikut:
- Menjeda pekerjaan pada dokumen kolaboratif selama periode peninjauan atau audit.
- Menetapkan item ke status akhir, seperti disetujui.
- Mencegah perubahan selama rapat sensitif.
- Melarang perubahan eksternal untuk alur kerja yang ditangani oleh sistem otomatis.
- Membatasi pengeditan oleh Google Apps Script dan add-on Google Workspace.
- Menghindari pengeditan dokumen yang tidak disengaja.
Namun, perhatikan bahwa meskipun batasan konten dapat membantu mengelola konten, batasan ini tidak dimaksudkan untuk mencegah pengguna dengan izin yang memadai melanjutkan pengerjaan item. Selain itu, ini bukan cara untuk membuat catatan yang tidak dapat diubah. Pembatasan konten Drive dapat berubah, sehingga pembatasan konten pada item tidak menjamin bahwa item tersebut tidak akan pernah berubah.
Mengelola file dengan batasan konten
Google Dokumen, Google Spreadsheet, dan Google Slide, serta semua file lainnya, dapat berisi batasan konten.
Pembatasan konten pada item mencegah perubahan pada judul dan kontennya, termasuk:
- Komentar dan saran (di Dokumen, Spreadsheet, Slide, dan file biner)
- Revisi file biner
- Teks dan pemformatan di Dokumen
- Teks atau formula di Spreadsheet, tata letak Spreadsheet, dan instance di Spreadsheet
- Semua konten di Slide, serta urutan dan jumlah slide
Jenis file tertentu tidak dapat berisi pembatasan 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 pembatasan konten
Untuk menambahkan pembatasan konten file, gunakan metode
files.update
dengan
kolom contentRestrictions.readOnly
yang ditetapkan ke true
. Tambahkan reason
opsional untuk
alasan Anda menambahkan batasan, seperti "Kontrak telah diselesaikan". Contoh kode berikut menunjukkan cara menambahkan pembatasan 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 dibatasi kontennya dan simbol gembok (antarmuka pengguna (UI) Google Drive. File sekarang 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
yang ditetapkan ke false
. Contoh kode berikut menunjukkan cara menghapus pembatasan 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 contoh kode, file tidak lagi dibatasi kontennya.
Anda juga dapat menggunakan UI Drive untuk menghapus pembatasan konten dan mengizinkan pengeditan konten (asalkan Anda memiliki izin yang benar). Ada dua opsi untuk melakukannya:
Di Drive, klik kanan file dengan batasan konten, lalu klik Buka kunci
.Gambar 2. Menghapus batasan konten file dalam daftar file Drive. Buka file dengan batasan konten, lalu klik (Mode terkunci) > Buka kunci file.
Gambar 3. Menghapus batasan konten file dalam dokumen.
Memeriksa pembatasan konten
Untuk memeriksa pembatasan 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 contoh kode, metode ini akan menampilkan resource ContentRestriction
jika ada.
Menambahkan batasan konten yang hanya dapat diubah oleh pemilik file
Untuk menambahkan pembatasan konten file sehingga hanya pemilik file yang dapat mengaktifkan mekanisme, gunakan metode files.update
dengan kolom boolean contentRestrictions.ownerRestricted
yang disetel ke true
. Contoh
kode berikut menunjukkan cara menambahkan pembatasan konten hanya untuk pemilik file:
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, file dibatasi kontennya dan hanya pemilik file yang dapat menghapusnya. Jika Anda adalah pemilik file, simbol kunci aktif ( antarmuka pengguna (UI) Drive. Jika Anda bukan pemiliknya, simbol gembok akan diredupkan.
) akan muncul di samping nama file dalamUntuk menghapus tanda ownerRestricted
, gunakan metode files.update
dengan
kolom contentRestrictions.ownerRestricted
yang ditetapkan ke false
.
Kemampuan pembatasan konten
Resource files
berisi kumpulan kolom
capabilities
boolean yang digunakan untuk menunjukkan apakah suatu tindakan dapat dilakukan pada
file.
Pembatasan konten berisi capabilities
berikut:
capabilities.canModifyEditorContentRestriction
: Apakah pengguna saat ini dapat menambahkan atau mengubah pembatasan 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 Memahami kemampuan file.
Untuk contoh pengambilan file capabilities
, lihat Mendapatkan kemampuan file.
Mencegah pengguna mendownload, mencetak, atau menyalin file Anda
Anda dapat membatasi cara pengguna mendownload, mencetak, dan menyalin file dalam Drive, Dokumen, Spreadsheet, dan Slide.
Untuk menentukan apakah pengguna dapat mengubah pembatasan download yang diterapkan oleh pemilik atau penyelenggara pada file, periksa kolom boolean
capabilities.canChangeItemDownloadRestriction
. Jika
capabilities.canChangeItemDownloadRestriction
disetel ke true
, pembatasan
download dapat diterapkan ke file. Untuk mengetahui informasi selengkapnya, lihat Memahami
kemampuan file.
Untuk menerapkan batasan download ke file, tetapkan kolom downloadRestrictions
menggunakan metode
files.update
. Anda dapat menyetel kolom
menggunakan
objek
DownloadRestrictionsMetadata
.
Objek DownloadRestrictionsMetadata
memiliki dua kolom:
itemDownloadRestriction
dan effectiveDownloadRestrictionWithContext
. Kedua
bidang dapat dibaca, tetapi hanya itemDownloadRestriction
yang dapat ditetapkan. Kolom
itemDownloadRestriction
menampilkan objek DownloadRestriction
. Objek DownloadRestriction
memiliki dua kolom boolean terpisah: restrictedForReaders
dan
restrictedForWriters
.
Saat menyetel kolom itemDownloadRestriction
, pembatasan download file diterapkan langsung oleh pemilik atau penyelenggara. Tidak memperhitungkan setelan drive bersama atau aturan pencegahan kebocoran data (DLP). Untuk mengetahui informasi selengkapnya, lihat Tentang DLP.
Jika Anda memperbarui kolom itemDownloadRestriction
dengan menetapkan
kolom restrictedForWriters
ke true
, artinya restrictedForReaders
adalah true
. Demikian pula, menyetel restrictedForWriters
ke true
dan
restrictedForReaders
ke false
sama dengan menyetel
restrictedForWriters
dan restrictedForReaders
ke true
.
Untuk kolom effectiveDownloadRestrictionWithContext
, pembatasan download
diterapkan ke file dan mencakup semua setelan pembatasan dan aturan
DLP.
Kolom effectiveDownloadRestrictionWithContext
dapat disetel ke
restrictedForWriters
atau restrictedForReaders
. Jika ada setelan pembatasan download atau penyalinan untuk peran yang sesuai dari setelan file, setelan drive bersama, atau aturan DLP (termasuk yang memiliki konteks), nilai akan disetel ke true
, jika tidak, nilainya adalah false
.
Kompatibilitas mundur
Sebaiknya gunakan objek
DownloadRestriction
untuk
menerapkan cara pengguna dapat mendownload, mencetak, dan menyalin file.
Jika Anda ingin menggunakan kolom boolean
copyRequiresWriterPermission
, fungsinya berbeda untuk membaca dari dan menulis
ke kolom.
Nilai kolom copyRequiresWriterPermission
yang diambil mencerminkan apakah
pengguna dengan izin role=commenter
atau role=reader
dapat mendownload, mencetak,
atau menyalin file dalam Drive. Nilai kolom mencerminkan
kombinasi setelan file, setelan drive bersama, atau aturan DLP. Namun,
evaluasi konteks untuk aturan DLP tidak disertakan.
Menetapkan kolom copyRequiresWriterPermission
ke false
akan memperbarui kolom
restrictedForWriters
dan restrictedForReaders
ke false
. Artinya, setelan pembatasan download atau penyalinan dihapus untuk semua pengguna.
Kolom yang mengontrol fitur download, cetak, dan salin
Tabel berikut mencantumkan kolom resource files
yang memengaruhi fungsi download, cetak, dan salin:
Kolom | Deskripsi | Versi |
---|---|---|
capabilities.canCopy |
Apakah pengguna saat ini dapat menyalin file. | v2 & v3 |
capabilities.canDownload |
Apakah pengguna saat ini dapat mendownload file. | v2 & v3 |
capabilities.canChangeCopyRequiresWriterPermission |
Apakah pengguna saat ini dapat mengubah batasan copyRequiresWriterPermission file. |
v2 & v3 |
capabilities.canChangeItemDownloadRestriction |
Apakah pengguna saat ini dapat mengubah batasan download file. | Khusus v3 |
copyRequiresWriterPermission |
Apakah opsi untuk menyalin, mencetak, atau mendownload file ini harus dinonaktifkan bagi pembaca dan pengomentar. | v2 & v3 |
downloadRestrictions |
Pembatasan download yang diterapkan pada file. | Khusus v3 |