【Google Apps Script (GAS)】Google Driveを使ったフォルダの操作について

2019年9月1日Google Apps

Google DriveにあるフォルダをGoogle Apps Scriptで操作ができます。
作成(create)、取得(get)、検索(search)、削除(remove)ができればプログラムを作る上での条件は十分満たせそうです。

フォルダを操作するにはDriveAppクラスとFolderクラスを使用します。
DriveAppクラスはrootフォルダ(マイドライブ)配下に対して、Folderクラスは任意のフォルダに対して操作します。

フォルダを作成する

スポンサーリンク

フォルダを新規作成する場合はcreateFolder(name)ソメッドを使用します。
nameには作成したいフォルダ名を指定します。

function myFunction() {
  var name="サンプルテスト";
  DriveApp.createFolder(name);
}
createaaaFolder()の実行結果

実行した結果、マイドライブ配下にサンプルテストが作成されます。

任意のフォルダ配下に作成したい場合はFolderクラスを使用します。
Folderクラスを使用する場合は親フォルダのIDを使ってフォルダを取得してcreateFolder(name)を実行します。

function myFunction() {
  var name="サンプルテスト";
  
  // 親フォルダを取得する
  var parentFolder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  // フォルダを作成する
  var folder = parentFolder.createFolder(name);
}

先ほど作成した「サンプルテスト」フォルダ配下に「サンプルテスト」フォルダが作成できました。

フォルダを取得する

フォルダを取得するには大きく分けて、「IDを指定して取得する」方法と「フォルダの一覧から探して取得する」方法があります。

IDを指定して取得する

IDを指定する場合はgetFolderById(id)を使用します。

function myFunction() {
  // フォルダを取得する
  var Folder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
}

フォルダの一覧から探して取得する

フォルダの一覧から探す場合はgetFolders()getFoldersByName(name)を使用します。

任意のフォルダ配下のフォルダを取得する場合

function myFunction() {
  // 親フォルダを取得する
  var parentFolder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  
  var folders = parentFolder.getFolders();
  while(folders.hasNext()) {
    var folder = folders.next();
    Logger.log(folder.getName());
  }
}

「マイドライブ」配下の全てのフォルダを取得する場合

function myFunction() {
  var rootFolders = DriveApp.getFolders();
  while(rootFolders.hasNext()) {
    var folder = rootFolders.next();
    Logger.log(folder.getName());
  }
}

フォルダを検索する

スポンサーリンク

フォルダを検索するにはsearchFolders(params)を使用します。
paramsには検索クエリ(Google Drive SDK documentation)を使用します。File query termsの章にファイル検索に関する検索クエリが記載されています。

function myFunction() {
  var folders = DriveApp.getRootFolder().searchFolders('title = "サンプルテスト"');
  while (folders.hasNext()) {
    var folder = folders.next();
    Logger.log(folder.getName());
  }
}

フォルダを削除する

フォルダを削除するにはremoveFolder(child)を使用します。
removeFolder(child)は削除したいフォルダの親フォルダのオブジェクトから実行します。
引数のchildには削除したいフォルダのFolderオブジェクトを指定します。

function myFunction() {
  var name="サンプルテスト";
  
  // 親フォルダを取得する
  var parentFolder = DriveApp.getFolderById("abcdefghijklmnopqrstuvwxyz");
  // 削除対象フォルダ
  var delFolder = DriveApp.getFolderById("12345678901234567890");
  // フォルダを削除する
   var folder = parentFolder.removeFolder(delFolder);
}

まとめ

スポンサーリンク

Google Apps Scriptでフォルダを操作する方法をまとめてみました。

作成、取得、検索、削除が使えるので、何か機能を持つプログラムを作るには要件を満たせそうです。

フォルダを移動するメソッドが必要な場合は、提供されていないので代わりになるようなメソッドを作ってあげる必要がありそうです。

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