Google Drive API از چندین راه برای جلوگیری از تغییر فایل پشتیبانی میکند، از جمله محدودیت محتوای فایل و ممنوع کردن گزینه دانلود، چاپ یا کپی فایلها.
با محدودیتهای محتوای Drive، فایلها را فقط خواندنی کنید
برای جلوگیری از انجام کارهای زیر می توانید یک محدودیت محتوا به فایل Google Drive اضافه کنید:
- اصلاح عنوان
- انجام ویرایش محتوا
- در حال آپلود یک ویرایش
- افزودن یا اصلاح نظرات
محدودیت محتوا محدودیت دسترسی نیست. در حالی که کاربران نمی توانند محتوای فایل را تغییر دهند، عملیات های دیگر همچنان بر اساس سطح دسترسی آنها مجاز است. برای مثال، کاربر با دسترسی ویرایش همچنان میتواند یک مورد را جابجا کند یا تنظیمات اشتراکگذاری آن را تغییر دهد.
برای افزودن یا حذف محدودیت محتوا روی فایلی در Drive، کاربر باید permissions مرتبط را داشته باشد. برای یک فایل یا پوشه در My Drive یا یک درایو مشترک با capabilities.canModifyEditorContentRestriction ، باید role=writer اختصاص داده شود. برای یک فایل یا پوشه در My Drive یا یک درایو مشترک با محدودیت محتوای ownerRestricted ، باید مالک فایل یا role=organizer باشید. برای مشاهده یک مورد با محدودیت محتوا، کاربران باید role=reader یا بالاتر داشته باشند. برای فهرست کامل نقشها، به نقشها و مجوزها مراجعه کنید. برای بهروزرسانی مجوزها در یک فایل، به بهروزرسانی مجوزها مراجعه کنید.
میتوانید از فیلد منطقی contentRestrictions.readOnly در منبع files برای تعیین محدودیت محتوا استفاده کنید. توجه داشته باشید که تعیین محدودیت محتوا برای یک مورد، محدودیت موجود را بازنویسی می کند.
سناریوهایی برای محدودیت محتوا
محدودیت محتوایی در مورد Drive به کاربران نشان میدهد که محتوا نباید تغییر کند. این می تواند به دلایل زیر باشد:
- توقف کار روی یک سند مشترک در طول دوره های بررسی یا ممیزی.
- تنظیم یک مورد به حالت نهایی، مانند تایید شده.
- جلوگیری از تغییرات در یک جلسه حساس
- ممنوعیت تغییرات خارجی برای گردش کار توسط سیستم های خودکار.
- محدود کردن ویرایشها توسط Google Apps Script و افزونههای Google Workspace.
- اجتناب از ویرایش های تصادفی یک سند
البته توجه داشته باشید که اگرچه محدودیتهای محتوا میتواند به مدیریت محتوا کمک کند، اما به این معنا نیست که کاربران با مجوزهای کافی از ادامه کار روی یک مورد جلوگیری کنند. علاوه بر این، راهی برای ایجاد یک رکورد غیرقابل تغییر نیست. محدودیتهای محتوای Drive قابل تغییر هستند، بنابراین محدودیت محتوا برای یک مورد تضمین نمیکند که آن مورد هرگز تغییر نمیکند.
فایل های دارای محدودیت محتوا را مدیریت کنید
Google Docs، Google Sheets و Google Slides، و همچنین سایر فایلها، میتوانند حاوی محدودیتهای محتوا باشند.
محدودیت محتوا در یک مورد از تغییرات عنوان و محتوای آن جلوگیری می کند، از جمله:
- نظرات و پیشنهادات (در مورد اسناد، برگهها، اسلایدها و فایلهای باینری)
- بازبینی یک فایل باینری
- متن و قالببندی در Docs
- متن یا فرمولها در Sheets، طرحبندی Sheets و نمونههایی در Sheets
- تمامی مطالب موجود در اسلایدها و همچنین ترتیب و تعداد اسلایدها
برخی از انواع فایل نمی توانند دارای محدودیت محتوا باشند. چند نمونه عبارتند از:
- فرم های گوگل
- سایت های گوگل
- نقشه های گوگل
- میانبرها و میانبرهای شخص ثالث. برای اطلاعات بیشتر، به ایجاد فایل میانبر برای محتوای ذخیره شده توسط برنامه و ایجاد میانبر برای فایل Drive مراجعه کنید.
یک محدودیت محتوا اضافه کنید
برای افزودن محدودیت محتوای فایل، از روش files.update با فیلد contentRestrictions.readOnly روی true استفاده کنید. یک reason اختیاری برای اینکه چرا محدودیت را اضافه میکنید، مانند «قرارداد نهایی شده» اضافه کنید. نمونه کد زیر نحوه افزودن محدودیت محتوا را نشان می دهد:
جاوا
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();
پایتون
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;
}
}
FILE_ID با fileId فایلی که می خواهید تغییر دهید جایگزین کنید.
هنگامی که کد نمونه را اجرا می کنید، فایل محدود به محتوا است و یک نماد قفل ( ) در کنار نام فایل در رابط کاربری Google Drive (UI) ظاهر می شود. فایل اکنون فقط خواندنی است.
حذف محدودیت محتوا
برای حذف محدودیت محتوای فایل، از روش files.update استفاده کنید که فیلد contentRestrictions.readOnly روی false تنظیم شده است. نمونه کد زیر نحوه حذف محدودیت محتوا را نشان می دهد:
جاوا
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(false));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
پایتون
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;
}
}
FILE_ID با fileId فایلی که می خواهید تغییر دهید جایگزین کنید.
وقتی کد نمونه را اجرا می کنید، فایل دیگر محدود به محتوا نیست.
همچنین میتوانید از رابط کاربری Drive برای حذف محدودیت محتوا و اجازه ویرایش محتوا (به شرط داشتن مجوزهای صحیح) استفاده کنید. دو گزینه برای انجام این کار وجود دارد:
در Drive، روی فایل دارای محدودیت محتوا کلیک راست کرده و روی Unlock کلیک کنید.
شکل 2. یک محدودیت محتوای فایل را در لیست فایل Drive حذف کنید. فایل را با محدودیت محتوا باز کنید و روی (حالت قفل) > باز کردن قفل فایل کلیک کنید.
شکل 3. یک محدودیت محتوای فایل را در یک سند حذف کنید.
محدودیت محتوا را بررسی کنید
برای بررسی محدودیت محتوا، از روش files.get با قسمت contentRestrictions بازگشتی استفاده کنید. نمونه کد زیر نحوه بررسی وضعیت محدودیت محتوا را نشان می دهد:
جاوا
File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();
پایتون
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;
}
}
FILE_ID با fileId فایلی که میخواهید بررسی کنید جایگزین کنید.
وقتی کد نمونه را اجرا می کنید، این روش در صورت وجود منبع ContentRestriction را برمی گرداند.
یک محدودیت محتوا اضافه کنید که فقط مالک فایل می تواند آن را تغییر دهد
برای افزودن محدودیت محتوای فایل به طوری که فقط دارندگان فایل بتوانند مکانیسم را تغییر دهند، true روش files.update با فیلد بولی contentRestrictions.ownerRestricted استفاده کنید. نمونه کد زیر نحوه افزودن محدودیت محتوا را فقط برای دارندگان فایل نشان می دهد:
جاوا
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();
پایتون
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;
}
}
FILE_ID با fileId فایلی که می خواهید تغییر دهید جایگزین کنید.
هنگامی که کد نمونه را اجرا می کنید، فایل محدود به محتوا است و فقط صاحبان فایل می توانند آن را حذف کنند. اگر مالک فایل هستید، یک نماد قفل فعال ( ) در کنار نام فایل در رابط کاربری Drive (UI) ظاهر میشود. اگر مالک نیستید، نماد قفل کم رنگ است.
برای حذف پرچم ownerRestricted ، از روش files.update با فیلد contentRestrictions.ownerRestricted استفاده کنید false
قابلیت های محدودیت محتوا
یک منبع files شامل مجموعه ای از فیلدهای capabilities بولی است که برای نشان دادن اینکه آیا می توان یک عمل را روی یک فایل انجام داد یا خیر.
محدودیت های محتوا دارای capabilities زیر است:
-
capabilities.canModifyEditorContentRestriction: اینکه آیا کاربر فعلی می تواند یک محدودیت محتوا را اضافه یا تغییر دهد. -
capabilities.canModifyOwnerContentRestriction: اینکه آیا کاربر فعلی می تواند محدودیت محتوای مالک را اضافه یا تغییر دهد. -
capabilities.canRemoveContentRestriction: آیا کاربر فعلی می تواند محدودیت محتوای اعمال شده را حذف کند (در صورت وجود).
برای اطلاعات بیشتر، به درک قابلیتهای فایل مراجعه کنید.
برای مثالی از بازیابی capabilities فایل، به دریافت قابلیت های فایل مراجعه کنید.
از دانلود، چاپ یا کپی کردن فایل توسط کاربران جلوگیری کنید
میتوانید نحوه دانلود، چاپ و کپی فایلها را در Drive، Docs، Sheets و Slides محدود کنید.
برای تعیین اینکه آیا کاربر میتواند محدودیتهای دانلود اعمال شده توسط سازماندهنده یا مالک را تغییر دهد، فیلد boolean capabilities.canChangeItemDownloadRestriction را بررسی کنید. اگر capabilities.canChangeItemDownloadRestriction روی true تنظیم شده باشد، محدودیت های دانلود را می توان برای فایل اعمال کرد. برای اطلاعات بیشتر، به درک قابلیتهای فایل مراجعه کنید.
برای اعمال محدودیت های دانلود بر روی یک فایل، قسمت downloadRestrictions را با استفاده از روش files.update تنظیم کنید. می توانید با استفاده از شی DownloadRestrictionsMetadata فیلد را تنظیم کنید.
شی DownloadRestrictionsMetadata دو فیلد دارد: itemDownloadRestriction و effectiveDownloadRestrictionWithContext . هر دو فیلد قابل خواندن هستند اما فقط itemDownloadRestriction می توان تنظیم کرد. قسمت itemDownloadRestriction یک شی DownloadRestriction برمی گرداند. شی DownloadRestriction دو فیلد بولی مجزا دارد: restrictedForReaders و restrictedForWriters .
هنگام تنظیم فیلد itemDownloadRestriction ، محدودیت دانلود فایل مستقیماً توسط مالک یا سازمان دهنده اعمال می شود. تنظیمات درایو مشترک یا قوانین پیشگیری از از دست دادن داده (DLP) را در نظر نمی گیرد. برای اطلاعات بیشتر، درباره DLP را ببینید.
اگر فیلد itemDownloadRestriction را با تنظیم فیلد restrictedForWriters روی true به روز کنید، به این معنی است که restrictedForReaders true است. به طور مشابه، تنظیم restrictedForWriters روی true و restrictedForReaders به false معادل با تنظیم هم restrictedForWriters و هم restrictedForReaders روی true است.
برای قسمت effectiveDownloadRestrictionWithContext ، محدودیت دانلود روی فایل اعمال می شود و تمام تنظیمات محدودیت و قوانین DLP را در نظر می گیرد.
قسمت effectiveDownloadRestrictionWithContext میتوان روی restrictedForWriters یا restrictedForReaders تنظیم کرد. اگر تنظیمات محدودیت دانلود یا کپی برای نقش های مربوطه از تنظیمات فایل، تنظیمات درایو مشترک، یا قوانین DLP (از جمله مواردی که زمینه دارند) وجود داشته باشد، مقدار روی true تنظیم می شود، در غیر این صورت false است.
سازگاری به عقب
توصیه می کنیم از شی DownloadRestriction برای اعمال نحوه دانلود، چاپ و کپی فایل ها توسط کاربران استفاده کنید.
اگر میخواهید از فیلد بولی copyRequiresWriterPermission استفاده کنید، عملکرد برای خواندن و نوشتن در فیلد متفاوت است.
مقدار بازیابی شده فیلد copyRequiresWriterPermission نشان میدهد که آیا کاربران دارای مجوز role=commenter یا role=reader میتوانند فایلها را در Drive دانلود، چاپ یا کپی کنند. مقدار فیلد ترکیبی از تنظیمات فایل، تنظیمات درایو مشترک یا قوانین DLP را نشان می دهد. با این حال، ارزیابی زمینه برای قوانین DLP گنجانده نشده است.
تنظیم فیلد copyRequiresWriterPermission روی false ، هر دو فیلد restrictedForWriters و restrictedForReaders را روی false بهروزرسانی میکند. این بدان معناست که تنظیمات محدودیت دانلود یا کپی برای همه کاربران حذف شده است.
فیلدهایی که ویژگی های دانلود، چاپ و کپی را کنترل می کنند
جدول زیر فیلدهای منبع files را فهرست میکند که بر عملکرد دانلود، چاپ و کپی تأثیر میگذارند:
| میدان | توضیحات | نسخه |
|---|---|---|
capabilities.canCopy | اینکه آیا کاربر فعلی می تواند یک فایل را کپی کند یا خیر. | v2 و v3 |
capabilities.canDownload | اینکه آیا کاربر فعلی میتواند فایلی را دانلود کند. | v2 و v3 |
capabilities.canChangeCopyRequiresWriterPermission | آیا کاربر فعلی میتواند محدودیت copyRequiresWriterPermission یک فایل را تغییر دهد یا خیر. | v2 و v3 |
capabilities.canChangeItemDownloadRestriction | اینکه آیا کاربر فعلی میتواند محدودیت دانلود یک فایل را تغییر دهد یا خیر. | فقط نسخه 3 |
copyRequiresWriterPermission | آیا گزینههای کپی، چاپ یا دانلود این فایل باید برای خوانندگان و نظر دهندگان غیرفعال باشد. | v2 و v3 |
downloadRestrictions | محدودیت های دانلود روی یک فایل اعمال می شود. | فقط نسخه 3 |