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, וגם הסדר והמספר של השקפים
סוגי קבצים מסוימים לא יכולים להכיל הגבלת תוכן. דוגמאות:
- Google Forms
- Google Sites
- Google Drawings
- קיצורי דרך וקיצורי דרך של צד שלישי. מידע נוסף זמין במאמרים יצירת קובץ קיצור לתוכן שמאוחסן באפליקציה ויצירת קיצור דרך לקובץ ב-Drive.
הוספת הגבלת תוכן
כדי להוסיף הגבלה על תוכן הקובץ, משתמשים ב-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. הקובץ יהיה עכשיו לקריאה בלבד.
) מופיע לצד שם הקובץ בהסרת הגבלת תוכן
כדי להסיר הגבלה על תוכן של קובץ, משתמשים ב-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 גם כדי להסיר הגבלת תוכן ולאפשר עריכת תוכן (בתנאי שיש לכם את ההרשאות המתאימות). יש שתי אפשרויות לעשות זאת:
ב-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
של הקובץ שרוצים לשנות.
כשמריצים את הקוד לדוגמה, התוכן של הקובץ מוגבל, ורק הבעלים של הקובץ יכולים להסיר אותו. אם אתם הבעלים של הקובץ, סמל של מנעול פעיל ( ממשק המשתמש (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
.