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

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 משתמשים ב-method 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.