【Google Apps Script(gas)】Google Driveを使ったファイルの操作について – 後編

2019年9月16日Google Apps

Google DriveにあるフォルダをGoogle Apps Scriptでファイルを操作する方法について、まとめてみようと思います。
後編ということで、コピーを作成するファイル名を変更するファイルサイズを取得する、権限を持っているユーザの一覧を取得する方法について書いてみようと思います。

ファイルをコピーする

スポンサーリンク

ファイルをコピーするにはmakeCopy()を使用します。makeCopy()には引数が設定でき、下記のように使い分けができます。

  • makeCopy():スクリプトが実行されたフォルダにファイルのコピーを作成する。
  • makeCopy(destination):任意のフォルダにファイルのコピーを作成する。
  • makeCopy(name):スクリプトが実行されたフォルダに任意のファイル名でファイルのコピーを作成する。
  • makeCopy(name, destination):任意のフォルダに任意のファイル名でファイルのコピーを作成する。

makeCopy()を使ったサンプル

function myFunction() {
  /** コピー元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** コピー実行 */
  var newFile = file.makeCopy();
}

makeCopy(destination)を使ったサンプル

function myFunction() {
  /** コピー元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** コピーしたファイルを置くディレクトリ */
  var folder = DriveApp.getFolderById(__FILDER_ID__);
  
  var newFile = file.makeCopy(folder);
}

makeCopy(name)を使ったサンプル

function myFunction() {
  /** コピー元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  
  var newFile = file.makeCopy('任意のファイル名');
}

makeCopy(name, destination)を使ったサンプル

function myFunction() {
  /** コピー元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** コピーしたファイルを置くディレクトリ */
  var folder = DriveApp.getFolderById(__FILDER_ID__);
  
  var newFile = file.makeCopy('任意のファイル名', folder);
}

ファイル名を変更する

ファイル名を変更するにはsetName()のメソッドを使用します。

setName(name)のサンプル

function myFunction() {
  /** コピー元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** ファイル名を変更 */
  file.setName('変更したファイル名');
}

ファイルサイズを取得する

スポンサーリンク

ファイルサイズを取得するケースとしては、ログファイルのローテート処理をバッチ化している際に判定材料として使えるのではないかと思います。

ファイルサイズを取得するには、getSize()を使用します。

function myFunction() {
  /** 元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** ファイルサイズを取得する */
  var fileSize = file.getSize();
  Logger.log(fileSize);
}

権限を持っているユーザの一覧を取得する

GoogleDriveで管理しているファイルには権限が付与されていて、他のユーザをファイル(フォルダも含む)を共有した時に効力を発揮します。

権限には「オーナー(Owner)」・「編集者(Editor)」・「コメント可(Commenter)」・「閲覧者(Viewer)」があり、特定のファイルについて、権限が付与されているユーザの一覧を取得することができます。

  • オーナー(Owner):getOwner()
  • 編集者(Editor)の一覧:getEditors()
  • コメント可(Commenter)の一覧:取得する方法なし
  • 閲覧者(Viewer)の一覧:getViewers()

編集者(Editor)の一覧を取得するサンプル

function myFunction() {
  /** 元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** 編集者(Editor)の一覧を取得する */
  var editors = file.getEditors();
  editors.forEach(function (editor) {
        Logger.log(editor);
  });
}

閲覧者(Viewer)の一覧を取得するサンプル

function myFunction() {
  /** 元ファイル */
  var file = DriveApp.getFileById(__FILE_ID__);
  /** 閲覧者(Viewer)の一覧を取得する */
  var editors = file.getViewers();
  editors.forEach(function (editor) {
        Logger.log(editor);
  });
}

まとめ

スポンサーリンク

前編、後編でファイル操作についてまとめてみました。
まとめながら、コメント可(Commenter)の一覧は取得するメソッドないの?などツッコミは色々ありましたが、そのあたりは工夫が必要(使う機会がなさそう)ということでしょう☆

ファイルを作って、他のファイルと同じ人に同じ権限を与えたい場合など管理者サイドのシステムで利用できそうです。

ファイル操作は複数の階層に跨って行う場合は再帰処理と組み合わせると非常に効率よくプログラムを組むことができます。
再帰処理についても紹介しておりますので、そちらもご参考にしてください。