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

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, שקפים וקבצים בינאריים)
  • גרסאות של קובץ בינארי
  • טקסט ועיצוב ב-Docs
  • טקסט או נוסחאות ב-Sheets, פריסה של Sheets, ומכונות ב-Sheets
  • כל התוכן ב-Slides, וגם הסדר והמספר שקפים

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

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

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

כשמריצים את הקוד לדוגמה, ה-method מחזירה 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, צריך להשתמש ב-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.