במאמר הזה מוסבר איך להטמיע תמיכה באחסון שיתופי באפליקציה באמצעות Google Drive API.
האחסון השיתופי פועל לפי מודלים שונים של ארגון, שיתוף ובעלות בהשוואה לתיקייה 'האחסון שלי'. אם האפליקציה שלכם יוצרת ומנהלת קבצים באחסון שיתופי, אתם צריכים להטמיע באפליקציה תמיכה באחסון שיתופי. מורכבות ההטמעה תלויה בפונקציונליות של האפליקציה.
כדי להתחיל, צריך לכלול את פרמטר השאילתה supportsAllDrives=true בבקשות כשהאפליקציה מבצעת את הפעולות הבאות:
Drive API v3
files.getfiles.listfiles.createfiles.updatefiles.copyfiles.deletechanges.listchanges.getStartPageTokenpermissions.listpermissions.getpermissions.createpermissions.updatepermissions.delete
Drive API v2
files.getfiles.listfiles.insertfiles.updatefiles.patchfiles.copyfiles.trashfiles.untrashfiles.deletefiles.touchchildren.insertparents.insertchanges.listchanges.getStartPageTokenchanges.getpermissions.listpermissions.getpermissions.insertpermissions.updatepermissions.patchpermissions.delete
הפרמטר supportsAllDrives=true מודיע ל-Google Drive שהאפליקציה שלכם מיועדת לטיפול בקבצים בתיקיות אחסון שיתופי.
אפליקציות שקוראות או משנות הרשאות, עוקבות אחרי שינויים או מחפשות בכמה קורפוסים דורשות יכולות נוספות של אחסון שיתופי. בהמשך המסמך הזה מפורטים שינויים נוספים שצריך לבצע כדי לבצע את המשימות האלה.
חיפוש תוכן באחסון שיתופי
כדי למצוא קבצים של משתמשים בתיקיות אחסון שיתופי, משתמשים בשיטה list במשאב files. כדי לחפש תיקיית אחסון שיתופי, אפשר לעיין במאמר בנושא חיפוש תיקיות אחסון שיתופי.
השיטה list מכילה את הפרמטרים הבאים של שאילתה שספציפיים לאחסון השיתופי:
driveId: המזהה של האחסון השיתופי שרוצים לחפש בו.
corpora: גופי הפריטים (קבצים או מסמכים) שהשאילתה חלה עליהם. הגופים הנתמכים הםuser,domain,driveו-allDrives. עדיף להשתמש ב-userאו ב-driveבמקום ב-allDrivesכדי לחסוך באנרגיה. כברירת מחדל, המאגר מוגדר ל-user.
includeItemsFromAllDrives: האם לכלול בתוצאות פריטים מ'האחסון שלי' ומאחסון שיתופי. אם המאפיין לא קיים או שהערך שלו מוגדר כ-False, לא יוחזרו פריטים באחסון השיתופי.
supportsAllDrives: האם האפליקציה ששולחת את הבקשה תומכת גם ב'האחסון שלי' וגם באחסון השיתופי. אם הערך הוא False, פריטים באחסון שיתופי לא נכללים בתגובה.
מצבי השאילתה הבאים ספציפיים לאחסון שיתופי:
includeItemsFromAllDrives |
corpora |
תיאור השאילתה |
|---|---|---|
true |
user |
שאילתות לגבי קבצים שהמשתמש ניגש אליהם, כולל קבצים באחסון השיתופי ובתיקיית 'האחסון שלי'. |
true |
domain |
שאילתות לגבי קבצים ששותפו עם הדומיין, כולל קבצים בתיקיות אחסון שיתופי ובתיקיית 'האחסון שלי'. |
true |
drive |
השאילתה מחפשת את כל הפריטים בתיקיית האחסון השיתופי שצוינה. צריך לציין את driveId בבקשה. |
true |
allDrives |
שאילתות לגבי קבצים שהמשתמש ניגש אליהם ולגבי כל תיקיות האחסון השיתופי שהוא חבר בהן. שימו לב שהתשובה עשויה לכלול את הסימן incompleteSearch:true, שמציין שחלק מהמאגרים לא נבדקו במסגרת הבקשה הזו. |
בדוגמאות הקוד הבאות אפשר לראות איך לחפש קבצים בכל תיקיות האחסון השיתופי וגם בתיקייה 'האחסון שלי':
Python
files = []
page_token = None
while True:
response = drive_service.files().list(
q="mimeType='application/vnd.google-apps.folder'",
spaces='drive',
corpora='allDrives',
supportsAllDrives=True,
includeItemsFromAllDrives=True,
fields='nextPageToken, files(id, name)',
pageToken=page_token
).execute()
files.extend(response.get('files', []))
page_token = response.get('nextPageToken', None)
if not page_token:
break
Node.js
let files = [];
let pageToken = null;
do {
const response = await drive_service.files.list({
q: "mimeType='application/vnd.google-apps.folder'",
spaces: 'drive',
corpora: 'allDrives',
supportsAllDrives: true,
includeItemsFromAllDrives: true,
fields: 'nextPageToken, files(id, name)',
pageToken: pageToken
});
files = files.concat(response.data.files);
pageToken = response.data.nextPageToken;
} while (pageToken);
Java
List<File> files = new ArrayList<>();
String pageToken = null;
do {
FileList result = driveService.files().list()
.setQ("mimeType='application/vnd.google-apps.folder'")
.setSpaces("drive")
.setCorpora("allDrives")
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
files.addAll(result.getFiles());
pageToken = result.getNextPageToken();
} while (pageToken != null);
curl
curl -X GET \
'https://www.googleapis.com/drive/v3/files?corpora=allDrives&includeItemsFromAllDrives=true&supportsAllDrives=true&fields=nextPageToken%2Cfiles(id%2Cname)' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
מחליפים את ACCESS_TOKEN בטוקן OAuth 2.0 של האפליקציה.
מעקב אחר שינויים באחסון שיתופי
כדי לעקוב אחרי שינויים באחסון שיתופי, משתמשים בשיטה list במשאב changes. מידע נוסף מופיע במאמר בנושא מעקב אחרי שינויים שבוצעו על ידי משתמשים ובאחסון שיתופי.
השיטה list מכילה את הפרמטרים הבאים של שאילתה שספציפיים לאחסון השיתופי:
driveId: תיקיית האחסון השיתופי שממנה מוחזרים השינויים. אם מצוין, מזהי השינויים מתייחסים לשינויים בפריטים באחסון השיתופי, ומספקים את המצב הנוכחי של קובץ. כדי להתייחס לשינוי ספציפי באחסון השיתופי, צריך להשתמש במזהה האחסון השיתופי ובמזהה השינוי כמזהים.
includeItemsFromAllDrives: האם לכלול ברשימת השינויים קבצים בתיקיות אחסון שיתופי או שינויים שבוצעו בהן.
supportsAllDrives: האם האפליקציה ששולחת את הבקשה תומכת באחסון שיתופי. אם הערך הוא false, לא מוחזרים פריטים באחסון שיתופי, כולל תיקיות אחסון שיתופי וקבצים בתוך אחסון שיתופי.
מצבי השאילתה הבאים ספציפיים לאחסון שיתופי:
includeItemsFromAllDrives |
driveId |
תיאור השאילתה |
|---|---|---|
true |
לא | השינויים שמוצגים הם שינויים בקבצים בתוך תיקיות אחסון שיתופי או מחוצה להן שהמשתמש ניגש אליהם, וגם שינויים בתיקיות אחסון שיתופי שהמשתמש חבר בהן. |
true |
כן | השינויים משקפים שינויים באחסון השיתופי הספציפי שצוין ובפריטים בתוך האחסון השיתופי הזה. |
בדוגמאות הקוד הבאות אפשר לראות איך לעקוב אחרי שינויים באחסון שיתופי:
Python
# 1. Get the start page token for the shared drive.
response = drive_service.changes().getStartPageToken(
supportsAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
start_page_token = response.get('startPageToken')
# 2. List changes starting from the page token.
response = drive_service.changes().list(
pageToken=start_page_token,
supportsAllDrives=True,
includeItemsFromAllDrives=True,
driveId='SHARED_DRIVE_ID'
).execute()
changes = response.get('changes', [])
Node.js
// 1. Get the start page token for the shared drive.
const tokenResponse = await drive_service.changes.getStartPageToken({
supportsAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const startPageToken = tokenResponse.data.startPageToken;
// 2. List changes starting from the page token.
const response = await drive_service.changes.list({
pageToken: startPageToken,
supportsAllDrives: true,
includeItemsFromAllDrives: true,
driveId: 'SHARED_DRIVE_ID'
});
const changes = response.data.changes;
Java
// 1. Get the start page token for the shared drive.
StartPageToken tokenResult = driveService.changes().getStartPageToken()
.setSupportsAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
String startPageToken = tokenResult.getStartPageToken();
// 2. List changes starting from the page token.
ChangeList changesResult = driveService.changes().list(startPageToken)
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
.setDriveId("SHARED_DRIVE_ID")
.execute();
List<Change> changes = changesResult.getChanges();
curl
# 1. Get the start page token for the shared drive.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes/startPageToken?supportsAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
# 2. List changes starting from the page token.
curl -X GET \
'https://www.googleapis.com/drive/v3/changes?pageToken=START_PAGE_TOKEN&supportsAllDrives=true&includeItemsFromAllDrives=true&driveId=SHARED_DRIVE_ID' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
מחליפים את מה שכתוב בשדות הבאים:
- SHARED_DRIVE_ID: המזהה של האחסון השיתופי.
- ACCESS_TOKEN: הטוקן של האפליקציה מסוג OAuth 2.0.
- START_PAGE_TOKEN: אסימון של דף ההתחלה של הכונן המשותף.
מחליפים את SHARED_DRIVE_ID במזהה של האחסון השיתופי.
הפעלת תמיכה באחסון שיתופי בממשק המשתמש של Drive
כדי לגשת לתוכן בתיקיית אחסון שיתופי באמצעות ממשק המשתמש של Drive, צריך לוודא שסימנתם את התיבה תמיכה בתיקיות אחסון שיתופי בכרטיסייה שילוב ממשק המשתמש של Drive ב-Google Drive API במסוף Google Cloud. מידע נוסף זמין במאמר בנושא הגדרת שילוב של ממשק משתמש ב-Drive.
שימוש בכלי לבחירת קבצים של Google עם תיקיות אחסון שיתופי
כלי הבחירה של Google תומך בבחירת פריטים באחסון שיתופי. פרטים על הפעלת תמיכה באחסון שיתופי והוספת תצוגות של אחסון שיתופי בכלי לבחירת קבצים זמינים במאמר בנושא Google Picker API.