تقنية

كيفية مشاركة الملفات في جوجل درايف مع عدة مستخدمين


تعمل واجهة برمجة تطبيقات Google Drive على تسهيل مشاركة الملفات والمجلدات مع مستخدمين آخرين برمجيًا بمساعدة Apps Script.

على سبيل المثال، إليك مقتطف من التعليمات البرمجية الذي سيتيح لك مشاركة الملف مع مستخدم حساب 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.

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

يتمثل أحد قيود Drive API في أنه لا يمكنك مشاركة الملفات إلا مع مستخدم واحد في المرة الواحدة. يعد Google Apps Script متزامنًا – فهو لا يدعم نمط المزامنة/الانتظار لوعود 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",
    ],
   ...
  }



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى