خدمة Drive المتقدّمة

تتيح لك خدمة Drive المتقدّمة استخدام Google Drive API في Apps Script. تمامًا مثل خدمة Drive المضمّنة في Apps Script، تسمح واجهة برمجة التطبيقات هذه للنصوص البرمجية بإنشاء الملفات والمجلدات في Google Drive والعثور عليها وتعديلها. في معظم الحالات، يكون استخدام الخدمة المضمّنة أسهل، ولكن توفّر هذه الخدمة المتقدّمة بعض ميزات الإضافية، بما في ذلك الوصول إلى خصائص الملفات المخصّصة بالإضافة إلى النُسخ السابقة للملفات والمجلدات.

مَراجع

للحصول على معلومات تفصيلية عن هذه الخدمة، يُرجى الاطّلاع على مستندات المرجع لواجهة برمجة التطبيقات Google Drive API. مثل كل الخدمات المتقدّمة في Apps Script، تستخدم خدمة Drive المتقدّمة العناصر والأساليب والمَعلمات نفسها التي تستخدمها واجهة برمجة التطبيقات العامة. لمزيد من المعلومات، يُرجى الاطّلاع على كيفية تحديد توقيعات الطرق.

للإبلاغ عن المشاكل والعثور على دعم آخر، يمكنك الاطّلاع على دليل دعم Drive API.

نموذج التعليمات البرمجية

تستخدِم عيّنات الرموز البرمجية في هذا القسم الإصدار 3 من واجهة برمجة التطبيقات.

تحميل ملفات

يوضّح نموذج الرمز البرمجي التالي كيفية حفظ ملف في حساب مستخدم على Drive.

advanced/drive.gs
/**
 * Uploads a new file to the user's Drive.
 */
function uploadFile() {
  try {
    // Makes a request to fetch a URL.
    const image = UrlFetchApp.fetch('http://goo.gl/nd7zjB').getBlob();
    let file = {
      name: 'google_logo.png',
      mimeType: 'image/png'
    };
    // Create a file in the user's Drive.
    file = Drive.Files.create(file, image, {'fields': 'id,size'});
    console.log('ID: %s, File size (bytes): %s', file.id, file.size);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to upload file with error %s', err.message);
  }
}

سرد المجلدات

يوضّح نموذج الرمز البرمجي التالي كيفية إدراج المجلدات ذات المستوى الأعلى في حساب مستخدم Drive. يُرجى ملاحظة استخدام الرموز المميّزة للصفحات للوصول إلى القائمة الكاملة للنتائج.

advanced/drive.gs
/**
 * Lists the top-level folders in the user's Drive.
 */
function listRootFolders() {
  const query = '"root" in parents and trashed = false and ' +
    'mimeType = "application/vnd.google-apps.folder"';
  let folders;
  let pageToken = null;
  do {
    try {
      folders = Drive.Files.list({
        q: query,
        pageSize: 100,
        pageToken: pageToken
      });
      if (!folders.files || folders.files.length === 0) {
        console.log('All folders found.');
        return;
      }
      for (let i = 0; i < folders.files.length; i++) {
        const folder = folders.files[i];
        console.log('%s (ID: %s)', folder.name, folder.id);
      }
      pageToken = folders.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

عرض التعديلات

يوضّح نموذج الرمز البرمجي التالي كيفية إدراج النُسخ السابقة لملف معيّن. يُرجى العلم أنّ بعض الملفات قد تحتوي على عدّة نُسخ، ويجب استخدام الرموز المميّزة للصفحات للوصول إلى القائمة الكاملة للنتائج.

advanced/drive.gs
/**
 * Lists the revisions of a given file.
 * @param {string} fileId The ID of the file to list revisions for.
 */
function listRevisions(fileId) {
  let revisions;
  const pageToken = null;
  do {
    try {
      revisions = Drive.Revisions.list(
          fileId,
          {'fields': 'revisions(modifiedTime,size),nextPageToken'});
      if (!revisions.revisions || revisions.revisions.length === 0) {
        console.log('All revisions found.');
        return;
      }
      for (let i = 0; i < revisions.revisions.length; i++) {
        const revision = revisions.revisions[i];
        const date = new Date(revision.modifiedTime);
        console.log('Date: %s, File size (bytes): %s', date.toLocaleString(),
            revision.size);
      }
      pageToken = revisions.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

إضافة خصائص الملف

يستخدم نموذج الرمز البرمجي التالي الحقل appProperties لإضافة ملف مخصّص خاصية إلى ملف. لا تظهر السمة المخصّصة إلا للنص البرمجي. لإضافة سمة مخصّصة إلى الملف تكون مرئية أيضًا للتطبيقات الأخرى، استخدِم حقل properties بدلاً من ذلك. لمزيد من المعلومات، يُرجى الاطّلاع على إضافة ملف مخصّص للخصائص.

advanced/drive.gs
/**
 * Adds a custom app property to a file. Unlike Apps Script's DocumentProperties,
 * Drive's custom file properties can be accessed outside of Apps Script and
 * by other applications; however, appProperties are only visible to the script.
 * @param {string} fileId The ID of the file to add the app property to.
 */
function addAppProperty(fileId) {
  try {
    let file = {
      'appProperties': {
        'department': 'Sales'
      }
    };
    // Updates a file to add an app property.
    file = Drive.Files.update(file, fileId, null, {'fields': 'id,appProperties'});
    console.log(
        'ID: %s, appProperties: %s',
        file.id,
        JSON.stringify(file.appProperties, null, 2));
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}