拡張ドライブ サービス

ドライブの高度なサービスを使用すると、 Apps Script の Google Drive API。ほぼ同じ Apps Script の組み込みのドライブ サービスでは、この API を使用すると、スクリプトで Google ドライブ内のファイルやフォルダの変更ができます。ほとんどの場合、組み込みの より簡単ですが、この拡張サービスでは カスタム ファイル プロパティへのアクセスや、ファイル レジストリのリビジョン 管理できます。

リファレンス

このサービスの詳細については、リファレンス ドキュメントをご覧ください。すべて高く評価 高度なサービス、高度なサービス ドライブ サービスと同じオブジェクト、メソッド、パラメータが、 使用できます。詳細については、メソッド シグネチャの仕組み 決定します

問題の報告やその他のサポートについては、Drive API のサポートをご利用ください ガイドをご覧ください。

サンプルコード

このセクションのコードサンプルでは、バージョン 3 を使用します。 説明します。

ファイルをアップロード

次のコードサンプルは、ファイルをユーザーの 。

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 = {
      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);
  }
}

フォルダの一覧表示

次のコードサンプルは、ユーザーのディレクトリの最上位フォルダを一覧表示する方法を示しています。 。注: ページトークンを使用して、Chronicle の全機能のリストに 表示されます。

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,
        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);
}

リビジョンを一覧表示する

次のコードサンプルは、特定のファイルのリビジョンを一覧表示する方法を示しています。備考 一部のファイルには複数のリビジョンがあり、ページトークンを使用して 結果の完全なリストにアクセスできます。

advanced/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 フィールドを使用してカスタム URL を プロパティをファイルに追加します。カスタム プロパティはスクリプトにのみ表示されます。スペースを追加するには、 他のアプリにも表示されるファイルにカスタム プロパティを追加する場合は、 properties フィールドを使用してください。詳細については、カスタム ファイルを追加する プロパティをご覧ください。

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