تقنية

كيفية تحميل الملفات على Google Drive باستخدام حساب الخدمة


سيرشدك هذا الدليل خطوة بخطوة حول كيفية تحميل الملفات إلى Google Drive باستخدام حساب الخدمة Node.js. في هذا المثال، لدينا مجلد على محرك الأقراص الثابتة المحلي الخاص بك يحتوي على ملفات متعددة ويُطلب منا تحميل هذه الملفات إلى مجلد معين في Google Drive.

1. قم بإنشاء مشروع Google Cloud

اذهب الى cloud.google.com وإنشاء مشروع Google Cloud جديد. قم بتسمية مشروعك، وقم بتغيير معرف المشروع وانقر فوق Create زر.

2. تمكين واجهات برمجة تطبيقات Google

يختار APIs & Services من القائمة اليسرى ثم اضغط على Enable APIs and Services لتمكين واجهات برمجة تطبيقات Google المختلفة. إذا كنت تخطط لتحميل الملفات إلى Google Drive، فستحتاج إلى تمكين Drive API. إذا كنت ترغب في استخدام Google Cloud Storage API، فستحتاج إلى تمكين Storage API.

جوجل درايف API

3. إنشاء حساب الخدمة

في APIs & Services القسم، انقر على Credentials وانقر على Create credentials لإنشاء حساب الخدمة.

إنشاء حساب الخدمة

3 أ. وصف حساب الخدمة

قم بتسمية حساب الخدمة الخاص بك ومعرف حساب الخدمة. يشبه هذا عنوان البريد الإلكتروني وسيتم استخدامه لتحديد حساب الخدمة الخاص بك في المستقبل. انقر Done للانتهاء من إنشاء حساب الخدمة.

تفاصيل حساب الخدمة

3ب. إنشاء ملف مفتاح

في Cloud Console، انتقل إلى IAM and Admin > صفحة حسابات الخدمة. انقر فوق عنوان البريد الإلكتروني لحساب الخدمة الذي تريد إنشاء مفتاح له. انقر فوق Keys فاتورة غير مدفوعة. انقر فوق Add key القائمة المنسدلة، ثم اختر Create new key.

يختار JSON كنوع المفتاح ثم انقر فوق إنشاء. سيؤدي هذا إلى تنزيل ملف JSON الذي سيحتوي على مفتاحك الخاص. لا تقم بإلزام هذا الملف بمستودع Github.

مفتاح حساب الخدمة

4. مشاركة مجلد Drive

في هذا المثال، نتطلع إلى تحميل الملفات من مجلد محلي إلى مجلد محدد في Google Drive.

انتقل إلى Google Drive الخاص بك وقم بإنشاء مجلد جديد. انقر بزر الماوس الأيمن فوق المجلد، واختر مشاركة وأضف عنوان البريد الإلكتروني لحساب الخدمة الذي قمت بإنشائه في الخطوة 3 كمحرر لهذا المجلد.

وبالتالي سيتمكن تطبيق Node.js الخاص بك من الوصول إلى هذا المجلد وتحميل الملفات إليه. لن يتمكن التطبيق من الوصول إلى أي موارد أخرى على Google Drive الخاص بك.

نصيحة: إذا كنت تعمل مع Google Calendar API، فيمكنك أيضًا مشاركة تقويم Google مع حساب الخدمة لتتمكن من الوصول للقراءة والكتابة إلى أحداث التقويم.

مشاركة مجلد جوجل درايف

5. قم بتكوين تطبيق Node.js

الآن بعد أن تم إعداد حساب الخدمة، نحتاج إلى إعداد تطبيق Node.js الذي سيقوم بتحميل الملفات إلى Google Drive. سنقوم بتشغيل هذا التطبيق من سطر الأوامر ولكن يمكنك أيضًا تحويله إلى تطبيق ويب باستخدام Google Cloud Run وDocker.

5 أ. قم بإنشاء عميل OAuth2 معتمد

يستبدل service.json باسم ملف مفتاح حساب الخدمة الذي قمت بإنشائه في الخطوة 3ب.

// service.js
const { google } = require('googleapis');
const path = require('path');

const getDriveService = () => {
  const KEYFILEPATH = path.join(__dirname, 'service.json');
  const SCOPES = ['https://www.googleapis.com/auth/drive'];

  const auth = new google.auth.GoogleAuth({
    keyFile: KEYFILEPATH,
    scopes: SCOPES
  });
  const driveService = google.drive({ version: 'v3', auth });
  return driveService;
};

module.exports = getDriveService;

5ب. كتابة رافع الملفات

استبدل المجلد الأصلي بمعرف المجلد الخاص بمجلد Google Drive الذي تريد التحميل إليه. بعد تحميل الملف، سنقوم بنقل الملف المحلي إلى سلة المهملات أيضًا.

// upload.js
const fs = require('fs');
const getInvoiceFolder = require('./folder');
const drive = require('./service');

const uploadSingleFile = async (fileName, filePath) => {
  const folderId = 'DRIVE_FOLDER_ID';
  const { data: { id, name } = {} } = await drive.files.create({
    resource: {
      name: fileName,
      parents: [folderId]
    },
    media: {
      mimeType: 'application/pdf',
      body: fs.createReadStream(filePath)
    },
    fields: 'id,name'
  });
  console.log('File Uploaded', name, id);
};

const scanFolderForFiles = async (folderPath) => {
  const folder = await fs.promises.opendir(folderPath);
  for await (const dirent of folder) {
    if (dirent.isFile() && dirent.name.endsWith('.pdf')) {
      await uploadSingleFile(dirent.name, path.join(folderPath, dirent.name));
      await fs.promises.rm(filePath);
    }
  }
};

module.exports = scanFolderForFiles;

6. قم بتشغيل برنامج تحميل الملفات

الآن بعد أن تم إعداد كل شيء، قم بإنشاء index.js ملف وتشغيل node index.js أمر لتحميل الملفات على Google Drive.

// index.js
const scanFolderForFiles = require('./scan');

scanFolderForFiles('local-folder').then(() => {
  console.log('🔥 All files have been uploaded to Google Drive successfully!');
});

قد تفكر في استخدام https://www.googleapis.com/auth/drive.file نطاق بدلا من أوسع من ذلك بكثير https://www.googleapis.com/auth/drive نِطَاق. في هذه الحالة، يجب أيضًا إنشاء المجلد الأصلي الأولي باستخدام نفس التطبيق، وإلا فلن يكون لديه إذن بالكتابة إلى المجلد.



Source link


اكتشاف المزيد من مرابع التكنولوجيا

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

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

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

اكتشاف المزيد من مرابع التكنولوجيا

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading