Google Drive API از چندین راه برای جلوگیری از تغییر فایل پشتیبانی میکند، از جمله محدودیت محتوای فایل و ممنوع کردن گزینه دانلود، چاپ یا کپی فایلها.
با محدودیتهای محتوای Drive، فایلها را فقط خواندنی کنید
برای جلوگیری از انجام کارهای زیر می توانید یک محدودیت محتوا به فایل Google Drive اضافه کنید:
- اصلاح عنوان
- انجام ویرایش محتوا
- در حال آپلود یک ویرایش
- افزودن یا اصلاح نظرات
اعمال محدودیتهای محتوا مکانیزمی است که به محتوای یک مورد Drive اجازه میدهد بدون تغییر مجوزهای دسترسی آن، فقط خواندنی شود. این به این معنی است که محدودیت دسترسی نیست. در حالی که کاربران نمی توانند محتوای فایل را تغییر دهند، عملیات های دیگر همچنان بر اساس سطح دسترسی مجاز هستند (به عنوان مثال، کاربر با دسترسی ویرایش همچنان می تواند یک مورد را جابجا کند یا تنظیمات اشتراک گذاری آن را تغییر دهد).
برای افزودن یا حذف محدودیت محتوا روی فایلی در Drive، کاربر باید مجوزهای مرتبط را داشته باشد. برای یک فایل یا پوشه در 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
کلیک کنید.فایل را با محدودیت محتوا باز کنید و روی (حالت قفل) > باز کردن قفل فایل کلیک کنید.
محدودیت محتوا را بررسی کنید
برای بررسی محدودیت محتوا، از روش 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
را برمی گرداند.
یک محدودیت محتوا اضافه کنید که فقط مالک فایل می تواند آن را تغییر دهد
برای افزودن محدودیت محتوای فایل به طوری که فقط دارندگان فایل بتوانند مکانیسم را تغییر دهند، از روش files.update
true
فیلد بولی 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
، false
روش files.update
با فیلد contentRestrictions.ownerRestricted
استفاده کنید.
قابلیت های محدودیت محتوا
یک منبع files
شامل مجموعه ای از فیلدهای capabilities
بولی است که برای نشان دادن اینکه آیا می توان یک عمل را روی یک فایل انجام داد یا خیر.
محدودیت های محتوا دارای capabilities
زیر است:
-
capabilities.canModifyEditorContentRestriction
: اینکه آیا کاربر فعلی می تواند یک محدودیت محتوا را اضافه یا تغییر دهد. -
capabilities.canModifyOwnerContentRestriction
: اینکه آیا کاربر فعلی می تواند محدودیت محتوای مالک را اضافه یا تغییر دهد. -
capabilities.canRemoveContentRestriction
: آیا کاربر فعلی می تواند محدودیت محتوای اعمال شده را حذف کند (در صورت وجود).
برای اطلاعات بیشتر، به قابلیت ها مراجعه کنید.
برای مثالی از capabilities
بازیابی فایل، به تأیید مجوزهای کاربر مراجعه کنید.
از دانلود، چاپ یا کپی کردن فایل توسط کاربران جلوگیری کنید
میتوانید نحوه بارگیری، چاپ و کپی فایلها را در Drive، Docs، Sheets و Slides توسط کاربرانی که دارای مجوز role=commenter
یا role=reader
، محدود کنید.
برای حذف گزینههای دانلود، چاپ و کپی فایلها، از روش files.update
با فیلد بولی copyRequiresWriterPermission
روی true
استفاده کنید.