고급 드라이브 서비스

고급 드라이브 서비스를 사용하면 Apps Script에서 Google Drive API를 사용할 수 있습니다. Apps Script의 내장된 드라이브 서비스와 마찬가지로 이 API를 사용하면 스크립트를 사용하여 Google 드라이브에서 파일과 폴더를 만들고 검색하며 수정할 수 있습니다. 대부분의 경우 기본 제공 서비스를 사용하기가 더 쉽지만, 이 고급 서비스는 파일 및 폴더 버전과 맞춤 파일 속성에 대한 액세스 권한을 비롯한 몇 가지 추가 기능을 제공합니다.

참조

이 서비스에 대한 자세한 내용은 Google Drive API의 참조 문서를 확인하세요. Apps Script의 모든 고급 서비스와 마찬가지로 고급 Drive 서비스는 공개 API와 동일한 객체, 메서드, 매개변수를 사용합니다. 자세한 내용은 메서드 서명 확인 방법을 참조하세요.

문제를 신고하고 다른 지원을 받으려면 Drive v2 지원 가이드를 참고하세요.

샘플 코드

아래 샘플 코드는 API의 버전 2를 사용합니다.

파일 업로드

다음 예는 파일을 사용자 드라이브에 저장하는 방법을 보여줍니다.

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

폴더 나열

다음 예시에서는 사용자 드라이브에 있는 최상위 폴더를 나열하는 방법을 보여줍니다. 페이지 토큰을 사용하여 전체 결과 목록에 액세스합니다.

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

버전 나열

다음 예에서는 지정된 파일의 버전을 나열하는 방법을 보여줍니다. 버전의 일부 속성은 특정 파일 형식에만 사용할 수 있습니다. 예를 들어 Google Workspace 애플리케이션 파일에는 파일을 다른 형식으로 내보낼 수 있는 링크가 포함되어 있습니다.

Advanced/drive.gs
/**
 * Lists the revisions of a given file. Note that some properties of revisions
 * are only available for certain file types. For example, Google Workspace
 * 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) {
      console.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);
      console.log('Date: %s, File size (bytes): %s', date.toLocaleString(),
          revision.fileSize);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}

맞춤 속성 추가

다음 예는 파일에 맞춤 속성을 추가하는 방법을 보여줍니다. Apps Script의 문서 속성과 달리 Drive의 커스텀 파일 속성은 공개 상태가 PUBLIC로 설정된 경우 Apps Script 외부 및 다른 애플리케이션에서 액세스할 수 있습니다.

Advanced/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
    console.log('Failed with error %s', err.message);
  }
}