高级云端硬盘服务

借助高级云端硬盘服务,您可以使用 Apps 脚本中的 Google Drive API。非常像 Apps 脚本的内置云端硬盘 service,此 API 允许脚本创建、查找 和修改 Google 云端硬盘中的文件和文件夹。在大多数情况下,内置的 服务更易于使用,但这项高级服务 功能,包括访问自定义文件属性以及 文件和文件夹。

参考

有关此服务的详情,请参阅参考文档 文档。全部点赞 高级服务 云端硬盘服务使用的对象、方法和参数与 公共 API。如需了解详情,请参阅如何确定方法签名

如需报告问题和查找其他支持,请参阅 Drive API 支持指南

示例代码

本部分中的代码示例使用版本 3 该 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;
  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 字段。如需了解详情,请参阅添加自定义文件属性

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