حماية محتوى الملف

تتيح 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

لا يمكن أن تتضمن أنواع ملفات معيّنة قيودًا على المحتوى. في ما يلي بعض الأمثلة:

إضافة قيود على المحتوى

لإضافة قيد على محتوى ملف، استخدِم عامل التشغيل 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 (واجهة المستخدم). تشير رسالة الأشكال البيانية الملف للقراءة فقط الآن.

ملف تنطبق عليه قيود محتوى ضمن قائمة ملفات Drive.
الشكل 1. ملف تنطبق عليه قيود محتوى ضمن قائمة ملفات 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 لإزالة أحد قيود المحتوى السماح بتعديل المحتوى (شرط أن تكون لديك الأذونات الصحيحة). هناك خياران الخيارات المتاحة لإجراء ذلك:

  1. في Drive، انقر بزر الماوس الأيمن على الملف الذي يتضمن قيودًا للمحتوى انقر على فتح القفل .

    أزِل أحد القيود المفروضة على محتوى ملف ضمن قائمة ملفات على Drive.
    الشكل 2. أزِل أحد القيود المفروضة على محتوى ملف ضمن قائمة ملفات على Drive.
  2. افتح الملف الذي يخضع لقيود المحتوى وانقر على (وضع القفل) > فتح قفل الملف

    أزِل أحد قيود محتوى ملف داخل مستند.
    الشكل 3. أزِل أحد القيود المفروضة على محتوى ملف داخل مستند.

التحقّق من القيود المفروضة على المحتوى

للتحقُّق من وجود قيود على المحتوى، استخدِم عامل التشغيل 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، يُرجى مراجعة التحقق من المستخدم. الأذونات

منع المستخدمين من تنزيل ملفك أو طباعته أو نسخه

يمكنك تحديد كيف يمكن للمستخدمين الذين لديهم إذن "role=commenter" أو "role=reader" تنفيذ الإجراءات التالية: تنزيل الملفات وطباعتها ونسخها داخل Drive، "مستندات Google" و"جداول بيانات Google" و"العروض التقديمية من Google".

لإزالة خيارات تنزيل الملفات وطباعتها ونسخها، استخدِم files.update مع تم ضبط الحقل المنطقي copyRequiresWriterPermission على true.