G Suite for Business以上には、Google Driveをファイルサーバのように扱える「Team Drive」こと「共有ドライブ」という機能があります。チームやプロジェクト単位で共有するドライブで、誰が見ても同じフォルダ・ファイル構成で、オーナーは特定個人ではなくチームドライブ自身がオーナーになるため、ファイルサーバから移行がしやすい機能ですね。

さて、このチームドライブですが、Google Apps Scriptから「作成」やファイルの移動が出来るのですが、これまでのようなDriveAppで単純に操作ができません。使えないわけではないのですが、以上のようなチームドライブの特性上そのままだと一部、操作ができないようになっている為です。

今回のまとめは、Google Apps Scriptからチームドライブを操作する一連の作業となります。

難易度:


今回使用するスプレッドシート

事前準備

Drive APIを有効にする

今回のスクリプトはDrive API v2を利用します。よって、以下の手順に従って、Drive APIをONにする必要性があります。

  1. スクリプトエディター画面に於いて、メニューの「リソース」⇒「Googleの拡張サービス」を開く
  2. Drive APIを探しだして、トグルをONにする

これでDrive APIがGoogle Apps ScriptでDrive APIを使えるようになります。場合によっては、Cloud Console側でもONにし、プロジェクト番号を紐つける必要性もあります。紐付け作業はこちらのページを参考にしてみてください。

図:Drive APIをオンにした

権限一覧を整備する

チームドライブにメンバーを追加や権限付与する場合には、スプレッドシートの権限一覧シートに於いてメンバーのメアド、権限を選択して整備する必要があります。この時、権限ですが、以下の通りとなります。

  • organizer : 管理者
  • fileOrganizer : コンテンツ管理者
  • writer : 投稿者
  • commenter : 閲覧者(コメント可)
  • reader : 閲覧者

管理者は複数設定できます。但し、1人に与えられる権限は1個です。

ソースコード

新規作成

  • チームドライブを直接作成するコードです。
  • 変数teamDriveには、ドライブのIDなどの情報が返ってきます。
  • ドライブのIDといっても、通常のフォルダと同じで、ドライブ直下のディレクトリのIDと同じです。
  • 名前を指定して作成を実行するだけです。

共有権限一覧取得

  • 対象のチームドライブ上に設定されている権限(メアドと権限名)を返します。

図:権限の一覧がダイアログで表示される

チームドライブ一覧

  • 現在用意されているチームドライブの一覧(名前とID)を返します。

チームドライブ管理者一覧

  • 対象のチームドライブに管理者権限を持っている人の一覧を返します。

チームドライブに権限付与

  • 対象のチームドライブに権限付与・新規メンバーの追加を行います。
  • スプレッドシートの権限一覧シートから設定を行います。

チームドライブにファイル作成

  • 通常のドライブと同じく、DriveAppにて新規ファイル作成が可能です。
  • ただし、ファイルのremoveaddは使えません。あくまでも新規作成だけです。

チームドライブにフォルダコピー

  • これがちょっとややこしく、素直にDriveAppで.addメソッドで行おうとすると失敗します。
  • makeCopyメソッドで複製させます。
  • 移動の場合は、複製後に移動元のファイルをremoveすればOK
  • 今回のメソッドはフォルダ構造維持してまるごとコピーします。

チームドライブにファイル移動や削除

GASだけでチームドライブの間でファイルの移動ができるか?といったら答えはNoです。新規に作る分にはDriveAppが使えますが。チームドライブのファイルの編集自体はDrive APIを介して行う事ができます。

  • この方法では、コピーではなく移動ができています。なので、ファイルのIDが変更されることがありません
  • ファイルの削除も編集作業なので、Drive APIを用いて行います。
  • チームドライブ間のファイルの移動も可能です。
  • targetfolderidが移動先のフォルダのID、fileidが移動させるファイルのIDになります。

関連リンク

共有してみる: