تتيح Google Drive API عدة طرق لمنع تعديل الملفات، بما في ذلك: تقييد محتوى الملف وحظر خيار التنزيل أو الطباعة أو النسخ الملفات.
جعل الملفات للقراءة فقط باستخدام قيود محتوى Drive
يمكنك إضافة قيود على المحتوى إلى ملف Google Drive لمنع المستخدمين من القيام بما يلي:
- تعديل العنوان
- إجراء تعديلات على المحتوى
- تحميل نسخة سابقة
- إضافة تعليقات أو تعديلها
إن تطبيق قيود المحتوى هو آلية تسمح لمحتوى جعل عنصر Drive للقراءة فقط بدون تغيير إعدادات أذونات الوصول. هذا يعني أنها ليس قيدًا على الوصول. بينما لا يمكن للمستخدمين تعديل محتوى الملف، غير أن لا تزال عملياتها مسموحًا بها بناءً على مستوى الوصول (على سبيل المثال، قد يعرض المستخدم الذي لا يزال بإمكان الإذن بتعديل المحتوى نقل عنصر أو تغيير إعدادات المشاركة فيه).
لإضافة تقييد محتوى من ملف في Drive أو إزالته، على أحد المستخدمين
يجب أن مرتبط
الأذونات. بالنسبة إلى ملف أو مجلد في
"ملفاتي" أو مساحة تخزين سحابي مشتركة مع
capabilities.canModifyEditorContentRestriction
، يجب أن يكون لديك role=writer
.
المهام المطلوبة. بالنسبة إلى ملف أو مجلد في "ملفاتي" أو مساحة تخزين سحابي مشتركة تتضمن
قيدًا على المحتوى في ownerRestricted
، يجب أن تكون مالك الملف أو أن يكون لديك
role=organizer
لعرض عنصر محظور على المحتوى، يجب أن يكون لدى المستخدمين
role=reader
أو أعلى. للحصول على قائمة كاملة بالأدوار، يُرجى الاطّلاع على الأدوار
الأذونات. لتغيير الأذونات في ملف، يُرجى الاطّلاع على
تغيير الأذونات
يمكنك استخدام الحقل المنطقي contentRestrictions.readOnly
على
مورد files
المطلوب ضبطه
قيد المحتوى. يُرجى العِلم أنّه عند ضبط قيود المحتوى على سلعة معيّنة،
يحل محل القائمة الحالية.
سيناريوهات قيود المحتوى
إنّ قيود المحتوى المفروضة على عنصر في Drive تشير إلى المستخدمين بأنّ في المحتوى. قد يرجع ذلك إلى بعض الأسباب التالية:
- إيقاف العمل على مستند تعاوني مؤقتًا أثناء فترات المراجعة أو التدقيق.
- ضبط عنصر على حالة نهائية، مثل الموافقة عليه.
- يتم منع التغييرات أثناء اجتماع حسّاس.
- حظر إجراء تغييرات خارجية على عمليات سير العمل التي تعالجها الأنظمة الآلية
- حظر التعديلات باستخدام "برمجة تطبيقات Google" و"إضافات Google Workspace"
- تجنُّب إجراء تعديلات غير مقصودة على مستند
يُرجى العلم أنه على الرغم من أن قيود المحتوى يمكن أن تساعد في إدارة المحتوى، إلا أنها لا لمنع المستخدمين الذين لديهم أذونات كافية من مواصلة العمل على عنصر واحد. بالإضافة إلى ذلك، فهي ليست طريقة لإنشاء سجل غير قابل للتغيير. قيود محتوى Drive قابلة للتغيير، لذا فإن تقييد المحتوى على عنصر ما لا يضمن عدم تغييره أبدًا.
إدارة الملفات الخاضعة لقيود المحتوى
ومستندات Google وجداول بيانات Google والعروض التقديمية من Google، بالإضافة إلى جميع الملفات الأخرى، على قيود المحتوى.
يؤدي قيود المحتوى المفروضة على العنصر إلى منع التغييرات في عنوانه ومحتواه، بما في ذلك:
- التعليقات والاقتراحات (في المستندات وجداول البيانات والعروض التقديمية والملفات الثنائية)
- مراجعات ملف ثنائي
- النص والتنسيق في "مستندات Google"
- النصوص أو المعادلات في جداول البيانات، تخطيط جداول البيانات، و"مثيلات" في "جداول بيانات Google"
- سيتم عرض جميع المحتويات في "العروض التقديمية من Google"، بالإضافة إلى ترتيب وعدد العروض التقديمية من Google
لا يمكن أن تتضمن أنواع ملفات معيّنة قيودًا على المحتوى. في ما يلي بعض الأمثلة:
- نماذج Google
- مواقع Google
- رسومات Google
- الاختصارات والاختصارات التابعة لجهات خارجية لمزيد من المعلومات، راجع إنشاء إلى المحتوى الذي تم تخزينه من خلال app وإنشاء اختصار ملف Drive.
إضافة قيود على المحتوى
لإضافة قيد على محتوى ملف، استخدِم عامل التشغيل
files.update
مع
تم ضبط الحقل contentRestrictions.readOnly
على true
. إضافة reason
اختيارية
سبب إضافة التقييد، مثل "عقد نهائي". ما يلي:
نموذج التعليمات البرمجية يعرض كيفية إضافة قيد على المحتوى:
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;
}
}
استبدِل FILE_ID بـ fileId
من الملف الذي تريد استخدامه.
التعديل.
عند تشغيل نموذج الرمز، يتم حظر المحتوى ويظهر رمز قفل في الملف. (واجهة مستخدم Google Drive (واجهة المستخدم). تشير رسالة الأشكال البيانية الملف للقراءة فقط الآن.
) يظهر بجانب اسم الملف داخلإزالة أحد قيود المحتوى
لإزالة قيد على محتوى ملف، استخدِم الطريقة files.update
مع
تم ضبط الحقل contentRestrictions.readOnly
على false
. نموذج التعليمة البرمجية التالي
كيفية إزالة أحد قيود المحتوى:
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;
}
}
استبدِل FILE_ID بـ fileId
من الملف الذي تريد استخدامه.
التعديل.
عند تشغيل نموذج الرمز، يتوقف الملف عن الوصول إلى المحتوى.
يمكنك أيضًا استخدام واجهة مستخدم Drive لإزالة أحد قيود المحتوى السماح بتعديل المحتوى (شرط أن تكون لديك الأذونات الصحيحة). هناك خياران الخيارات المتاحة لإجراء ذلك:
في Drive، انقر بزر الماوس الأيمن على الملف الذي يتضمن قيودًا للمحتوى انقر على فتح القفل
.افتح الملف الذي يخضع لقيود المحتوى وانقر على (وضع القفل) > فتح قفل الملف
التحقّق من القيود المفروضة على المحتوى
للتحقُّق من وجود قيود على المحتوى، استخدِم عامل التشغيل
files.get
مع
تم إرجاع حقل contentRestrictions
. يوضح نموذج التعليمة البرمجية التالي كيفية
التحقّق من حالة أحد قيود المحتوى:
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;
}
}
استبدِل FILE_ID بـ fileId
من الملف الذي تريد استخدامه.
شيك.
عند تشغيل نموذج التعليمة البرمجية، تُرجع الطريقة
ContentRestriction
إذا كان موجودًا.
إضافة قيود على المحتوى لا يمكن لأحد سوى مالك الملف تعديلها
لإضافة تقييد محتوى ملف بحيث لا يتمكن سوى مالكي الملف من تبديل الآلية،
استخدِم الطريقة files.update
مع
تم تعيين الحقل المنطقي contentRestrictions.ownerRestricted
على true
. تشير رسالة الأشكال البيانية
نموذج الرمز التالي يعرض كيفية إضافة قيود على المحتوى لمالكي الملفات
فقط:
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;
}
}
استبدِل FILE_ID بـ fileId
من الملف الذي تريد استخدامه.
التعديل.
عند تشغيل نموذج التعليمات البرمجية، يكون الملف مقيَّدًا بالمحتوى ويكون ملف يمكن للمالكين إزالتها. إذا كنت مالك الملف، فسيظهر رمز قفل نشط ( واجهة مستخدم Drive (واجهة المستخدم). في حال حذف لست المالك، وسيظهر رمز القفل باهتًا.
) بجانب اسم الملف داخللإزالة العلامة ownerRestricted
، استخدِم الطريقة files.update
مع العلامة
تم ضبط حقل contentRestrictions.ownerRestricted
على false
.
إمكانات تقييد المحتوى
يحتوي مورد files
على
مجموعة من حقول capabilities
المنطقية المستخدمة للإشارة إلى ما إذا كان أحد الإجراءات
يمكن تنفيذها على ملف.
تتضمن قيود المحتوى capabilities
التالية:
capabilities.canModifyEditorContentRestriction
: ما إذا كان المستخدم الحالي إضافة قيود على المحتوى أو تعديلهاcapabilities.canModifyOwnerContentRestriction
: ما إذا كان المستخدم الحالي إضافة أو تعديل قيود المحتوى المتاحة للمالك.capabilities.canRemoveContentRestriction
: ما إذا كان المستخدم الحالي يمكنه إزالة قيود المحتوى المطبَّقة (إن وُجدَت).
لمزيد من المعلومات، يُرجى مراجعة الإمكانات:
للاطّلاع على مثال لاسترداد الملف capabilities
، يُرجى مراجعة التحقق من المستخدم.
الأذونات
منع المستخدمين من تنزيل ملفك أو طباعته أو نسخه
يمكنك تحديد كيف يمكن للمستخدمين الذين لديهم إذن "role=commenter
" أو "role=reader
" تنفيذ الإجراءات التالية:
تنزيل الملفات وطباعتها ونسخها داخل Drive،
"مستندات Google" و"جداول بيانات Google" و"العروض التقديمية من Google".
لإزالة خيارات تنزيل الملفات وطباعتها ونسخها، استخدِم
files.update
مع
تم ضبط الحقل المنطقي copyRequiresWriterPermission
على true
.