הגנה על תוכן הקבצים

Google Drive API תומך בכמה דרכים למניעת שינוי של קבצים, כולל הגבלת תוכן הקובץ ואיסור על האפשרות להוריד, להדפיס או להעתיק קבצים.

הגדרת קבצים כקבצי קריאה בלבד באמצעות הגבלות תוכן ב-Drive

אתם יכולים להוסיף הגבלת תוכן לקובץ ב-Google Drive כדי למנוע מהמשתמשים לבצע את הפעולות הבאות:

  • שינוי הכותרת
  • עריכת תוכן
  • העלאת גרסה
  • הוספה או שינוי של תגובות

החלת הגבלות תוכן היא מנגנון שמאפשר להגדיר את התוכן של פריט ב-Drive כ'לקריאה בלבד' בלי לשנות את הרשאות הגישה של הפריט. כלומר, זו לא הגבלת גישה. המשתמשים לא יכולים לשנות את תוכן הקובץ, אבל עדיין מותר להם לבצע פעולות אחרות בהתאם לרמת הגישה (לדוגמה, משתמש עם הרשאת עריכה עדיין יכול להעביר פריט או לשנות את הגדרות השיתוף שלו).

כדי להוסיף או להסיר הגבלת תוכן על קובץ ב-Drive, למשתמש צריכות להיות ההרשאות המשויכות. כדי להשתמש בקובץ או בתיקייה בתיקיית 'האחסון שלי' או באחסון שיתופי עם capabilities.canModifyEditorContentRestriction, צריך להיות לכם הרשאת role=writer. כדי לשנות את ההגבלה על תוכן של קובץ או תיקייה בתיקיית 'האחסון שלי' או באחסון שיתופי עם ההגבלה ownerRestricted, צריך להיות לכם בעלות על הקובץ או ההרשאה role=organizer. כדי להציג פריט עם הגבלת תוכן, המשתמשים צריכים להיות בגיל role=reader ומעלה. רשימה מלאה של התפקידים מופיעה במאמר תפקידים והרשאות. במאמר שינוי הרשאות מוסבר איך משנים את ההרשאות בקובץ.

אפשר להשתמש בשדה הבוליאני contentRestrictions.readOnly במשאב files כדי להגדיר הגבלת תוכן. חשוב לזכור שהגדרת הגבלת תוכן על פריט תוכן מחליפה את ההגבלה הקיימת.

תרחישים של הגבלות תוכן

הגבלת תוכן על פריט ב-Drive מסמנת למשתמשים שאסור לשנות את התוכן. יכולות להיות לכך כמה סיבות:

  • השהיה של עבודה במסמך משותף במהלך תקופות בדיקה או ביקורת.
  • הגדרת פריט למצב סופי, כמו 'אושר'.
  • מניעת שינויים במהלך פגישה עם מידע רגיש.
  • איסור על שינויים חיצוניים בתהליכי עבודה שמנוהלים על ידי מערכות אוטומטיות.
  • הגבלת העריכות על ידי Google Apps Script ותוספים של Google Workspace.
  • מניעת עריכות מקריות במסמך.

עם זאת, חשוב לזכור שהגבלות תוכן יכולות לעזור בניהול התוכן, אבל הן לא נועדו למנוע ממשתמשים עם הרשאות מספיקות להמשיך לעבוד על פריט. בנוסף, היא לא דרך ליצור רשומה שלא ניתן לשנות. הגבלות התוכן ב-Drive ניתנות לשינוי, כך שהגבלת תוכן על פריט מסוים לא מבטיחה שהפריט לא ישתנה אף פעם.

ניהול קבצים עם הגבלות תוכן

קבצים ב-Google Docs, ב-Google Sheets וב-Google Slides, וגם כל קבצים אחרים, יכולים לכלול הגבלות תוכן.

הגבלת תוכן על פריט מונעת שינויים בשם ובתוכן שלו, כולל:

  • תגובות והצעות (ב-Docs, ב-Sheets, ב-Slides ובקבצים בינאריים)
  • גרסאות של קובץ בינארי
  • טקסט ועיצוב ב-Docs
  • טקסט או נוסחאות ב-Sheets, פריסה של Sheets ומופעים ב-Sheets
  • כל התוכן ב-Slides, וגם הסדר והמספר של השקפים

סוגי קבצים מסוימים לא יכולים לכלול הגבלת תוכן. הנה כמה דוגמאות:

הוספת הגבלת תוכן

כדי להוסיף הגבלה על תוכן הקובץ, משתמשים ב-method‏ 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 של הקובץ שרוצים לשנות.

כשמריצים את הקוד לדוגמה, התוכן של הקובץ מוגבל וסמל של מנעול () מופיע לצד שם הקובץ בממשק המשתמש (UI) של Google Drive. הקובץ יהיה עכשיו לקריאה בלבד.

קובץ עם הגבלת תוכן ברשימת קבצים ב-Drive.
איור 1. קובץ עם הגבלת תוכן ברשימת קבצים ב-Drive.

הסרת הגבלת תוכן

כדי להסיר הגבלת תוכן של קובץ, משתמשים ב-method ‏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 של הקובץ שרוצים לשנות.

כשמריצים את הקוד לדוגמה, התוכן של הקובץ מוגבל, ורק בעלי הקובץ יכולים להסיר אותו. אם אתם הבעלים של הקובץ, סמל של מנעול פעיל () יופיע לצד שם הקובץ ב ממשק המשתמש (UI) של Drive. אם אתם לא הבעלים, סמל הנעילה יהיה כהה.

כדי להסיר את הדגל ownerRestricted, משתמשים בשיטה files.update עם השדה contentRestrictions.ownerRestricted שמוגדר כ-false.

יכולות של הגבלת תוכן

משאב files מכיל אוסף של שדות capabilities בוליאניים שמשמשים לציון אם אפשר לבצע פעולה בקובץ.

הגבלות התוכן מכילות את capabilities הבאים:

  • capabilities.canModifyEditorContentRestriction: האם המשתמש הנוכחי יכול להוסיף או לשנות הגבלת תוכן.
  • capabilities.canModifyOwnerContentRestriction: האם המשתמש הנוכחי יכול להוסיף או לשנות הגבלת תוכן של בעלים.
  • capabilities.canRemoveContentRestriction: אם המשתמש הנוכחי יכול להסיר את הגבלת התוכן שהוגדרה (אם יש כזו).

מידע נוסף זמין בקטע יכולות.

דוגמה לאחזור הקובץ capabilities מופיעה במאמר אימות ההרשאות של משתמשים.

איך מונעים ממשתמשים להוריד, להדפיס או להעתיק את הקובץ

אתם יכולים להגביל את היכולת של משתמשים עם ההרשאות role=commenter או role=reader להוריד, להדפיס ולהעתיק קבצים ב-Drive, ב-Docs, ב-Sheets וב-Slides.

כדי להסיר את האפשרויות להורדה, להדפסה ולהעתקה של קבצים, משתמשים בשיטה files.update עם השדה הבוליאני copyRequiresWriterPermission שמוגדר כ-true.