سرویس درایو پیشرفته

سرویس پیشرفته Drive به شما امکان می دهد از Google Drive API در Apps Script استفاده کنید. بسیار شبیه به سرویس Drive داخلی Apps Script، این API به اسکریپت‌ها اجازه می‌دهد تا فایل‌ها و پوشه‌ها را در Google Drive ایجاد، پیدا و تغییر دهند. در بیشتر موارد، استفاده از سرویس داخلی آسان‌تر است، اما این سرویس پیشرفته چند ویژگی اضافی از جمله دسترسی به ویژگی‌های فایل سفارشی و همچنین ویرایش فایل‌ها و پوشه‌ها را فراهم می‌کند.

مرجع

برای اطلاعات دقیق در مورد این سرویس، به مستندات مرجع برای Google Drive API مراجعه کنید. مانند همه سرویس‌های پیشرفته در Apps Script، سرویس پیشرفته Drive از همان اشیا، روش‌ها و پارامترهای API عمومی استفاده می‌کند. برای اطلاعات بیشتر، نحوه تعیین امضای روش را ببینید.

برای گزارش مشکلات و یافتن پشتیبانی دیگر، راهنمای پشتیبانی Drive API را ببینید.

کد نمونه

نمونه کدهای این بخش از نسخه 3 API استفاده می کنند.

فایل ها را آپلود کنید

نمونه کد زیر نحوه ذخیره یک فایل در درایو کاربر را نشان می دهد.

/**
 * 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 کاربر را نشان می‌دهد. به استفاده از نشانه های صفحه برای دسترسی به لیست کامل نتایج توجه کنید.

/**
 * 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);
}

فهرست بازنگری ها

نمونه کد زیر نحوه فهرست کردن ویرایش‌های یک فایل معین را نشان می‌دهد. توجه داشته باشید که برخی از فایل ها می توانند چندین ویرایش داشته باشند و برای دسترسی به لیست کامل نتایج باید از نشانه های صفحه استفاده کنید.

/**
 * 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 استفاده کنید. برای اطلاعات بیشتر، به افزودن خصوصیات فایل سفارشی مراجعه کنید.

/**
 * 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);
  }
}