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

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

مرجع

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

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

کد نمونه

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

آپلود فایل‌ها

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

پیشرفته/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.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);
}

فهرست اصلاحات

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

پیشرفته/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;
  let 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 استفاده کنید. برای اطلاعات بیشتر، به بخش Add custom file properties مراجعه کنید.

پیشرفته/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);
  }
}