Dịch vụ Drive nâng cao

Dịch vụ Drive nâng cao cho phép bạn sử dụng API web của Google Drive trong Apps Script. Giống như dịch vụ tích hợp sẵn trong Apps Script, API này cho phép tập lệnh tạo, tìm và sửa đổi tệp và thư mục trong Google Drive. Trong hầu hết trường hợp, dịch vụ tích hợp dễ sử dụng hơn, nhưng dịch vụ nâng cao này cung cấp một số tính năng bổ sung, bao gồm cả quyền truy cập vào các thuộc tính tệp tuỳ chỉnh cũng như bản sửa đổi đối với tệp và thư mục.

Tham khảo

Để biết thông tin chi tiết về dịch vụ này, hãy xem tài liệu tham khảo về API web của Google Drive. Giống như tất cả dịch vụ nâng cao trong Apps Script, dịch vụ Drive nâng cao sử dụng cùng các đối tượng, phương thức và thông số giống như API công khai. Để biết thêm thông tin, hãy xem phần Cách xác định chữ ký phương pháp.

Để báo cáo sự cố và tìm dịch vụ hỗ trợ khác, hãy xem Hướng dẫn hỗ trợ dành cho Drive phiên bản 2.

Mã mẫu

Mã mẫu bên dưới sử dụng phiên bản 2 của API.

Đang tải tệp lên

Ví dụ sau minh hoạ cách lưu tệp vào Drive của người dùng.

nâng cao/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 = {
      title: 'google_logo.png',
      mimeType: 'image/png'
    };
    // Insert new files to user's Drive
    file = Drive.Files.insert(file, image);
    Logger.log('ID: %s, File size (bytes): %s', file.id, file.fileSize);
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed to upload file with error %s', err.message);
  }
}

Liệt kê thư mục

Ví dụ sau minh hoạ cách liệt kê các thư mục cấp cao nhất trong Drive của người dùng. Hãy lưu ý việc sử dụng mã thông báo trang để truy cập vào danh sách kết quả đầy đủ.

nâng cao/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,
        maxResults: 100,
        pageToken: pageToken
      });
      if (!folders.items || folders.items.length === 0) {
        Logger.log('No folders found.');
        return;
      }
      for (let i = 0; i < folders.items.length; i++) {
        const folder = folders.items[i];
        Logger.log('%s (ID: %s)', folder.title, folder.id);
      }
      pageToken = folders.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      Logger.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

Bản sửa đổi danh sách

Ví dụ sau minh hoạ cách liệt kê các bản sửa đổi cho một tệp nhất định. Lưu ý rằng một số thuộc tính của bản sửa đổi chỉ có sẵn cho một số loại tệp nhất định. Ví dụ: Google Workspace tệp ứng dụng không chiếm dung lượng trong Google Drive và do đó, trả về kích thước tệp là 0.

nâng cao/drive.gs
/**
 * Lists the revisions of a given file. Note that some properties of revisions
 * are only available for certain file types. For example, G Suite application
 * files do not consume space in Google Drive and thus list a file size of 0.
 * @param {string} fileId The ID of the file to list revisions for.
 */
function listRevisions(fileId) {
  try {
    const revisions = Drive.Revisions.list(fileId);
    if (!revisions.items || revisions.items.length === 0) {
      Logger.log('No revisions found.');
      return;
    }
    for (let i = 0; i < revisions.items.length; i++) {
      const revision = revisions.items[i];
      const date = new Date(revision.modifiedDate);
      Logger.log('Date: %s, File size (bytes): %s', date.toLocaleString(),
          revision.fileSize);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with error %s', err.message);
  }
}

Thêm thuộc tính tùy chỉnh

Ví dụ sau minh hoạ cách thêm thuộc tính tuỳ chỉnh vào tệp. Không giống như thuộc tính tài liệu của Apps Script, các thuộc tính tệp tùy chỉnh của Drive có thể được truy cập bên ngoài Apps Script và bằng các ứng dụng khác (nếu chế độ hiển thị được đặt thành PUBLIC).

nâng cao/drive.gs
/**
 * Adds a custom 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 (if the visibility is set to PUBLIC).
 * @param {string} fileId The ID of the file to add the property to.
 */
function addCustomProperty(fileId) {
  try {
    const property = {
      key: 'department',
      value: 'Sales',
      visibility: 'PUBLIC'
    };
    // Adds a property to a file
    Drive.Properties.insert(property, fileId);
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with error %s', err.message);
  }
}