كيفية مشاركة الملفات في محرك Google مع عدة مستخدمين

تجعل Google Drive API من السهل مشاركة الملفات والمجلدات مع المستخدمين الآخرين برمجياً بمساعدة البرنامج النصي للتطبيقات.
على سبيل المثال ، إليك مقتطف من التعليمات البرمجية التي تتيح لك مشاركة الملف مع مستخدم حساب Google آخر وتوفير إمكانية الوصول إلى الملف. استبدل الدور من writer
ل reader
لمنحهم الوصول للقراءة فقط.
const shareFilesInGoogleDrive = (fileOrFolderId, emailAddress) => {
Drive.Permissions.insert(
{
role: 'writer', // or "reader" or "commenter"
value: emailAddress,
type: 'user',
},
fileOrFolderId,
{
supportsAllDrives: true,
sendNotificationEmails: true,
}
);
};
يوصى بتعيين علامة sendNotifications على true
نظرًا لأنه سيرسل إشعارًا بريدًا إلكترونيًا عند مشاركة الملف مع مستخدم قد لا يكون لديه حساب Google.
مشاركة الملفات مع عدة مستخدمين
يتمثل أحد قيود واجهة برمجة تطبيقات محرك الأقراص في أنه يمكنك مشاركة الملفات فقط مع مستخدم واحد في وقت واحد. البرنامج النصي لتطبيقات Google متزامن – فهو لا يدعم نمط Async/Sere’s لوعود JavaScript ، وبالتالي لا يمكنك تشغيل الكود بالتوازي.
ومع ذلك ، هناك حل بسيط لمساعدتك على مشاركة ملف أو مجلد في Google Drive مع متعددة من المستخدمين في واحد بالتوازي مع خدمة urlfetchapp.
const shareGoogleDriveFileWithMultipleUsers = () => {
const fileId = '<Drive File Id>';
const editors = ['angus@gmail.com', 'kiran@school.edu', 'jacob@corp.com'];
const API = 'https://www.googleapis.com/drive/v3/files';
const queryString = 'supportsAllDrives=true&sendNotifications=true';
const accessToken = ScriptApp.getOAuthToken();
const requests = editors.map((emailAddress) => ({
url: `${API}/${fileId}/permissions?${queryString}`,
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${accessToken}`,
},
muteHttpExceptions: true,
payload: JSON.stringify({
role: 'writer',
type: 'user',
emailAddress: emailAddress,
}),
}));
UrlFetchApp.fetchAll(requests);
};
في المقتطف أعلاه ، نحن ندعو مباشرة إلى Google Drive API (V3) بدلاً من خدمة DriveApp لنص البرنامج النصي. ال fetchAll
يتيح لك تقديم طلبات HTTP متعددة في طلب واحد وإرجاع مجموعة من الردود.
يرجى التأكد من إضافة النطاقات التالية في appsscript.json
ملف:
{
...
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/drive",
],
...
}