libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

Googleドキュメントのファイル管理 (2/5)

作成:2011-08-15 09:33
更新:2011-11-04 17:06

■ファイルとフォルダの取得

では、実際にこれらを利用しましょう。まずはFileFolderの取得からです。DocsListには、Googleドキュメントに保管されているファイルやフォルダを取得するためのメソッドが用意されています。

・全フォルダを取得する
変数 = DocsList.getFolders();

・全ファイルを取得する
変数 = DocsList.getFiles();

これらは、ファイルやフォルダをすべてまとめた配列を取得するものです。Googleドキュメントでは、フォルダ(コレクション)類は階層的に組み込まれますが、getFolders/getFilesではフォルダの階層に関係なくすべてのFolder/Fileが取得されます。――この他、個々のファイルやフォルダを取得するメソッドもあります。

・IDを指定してFolderを得る
変数 = DocsList.getFolderById( フォルダのID );

・IDを指定してFileを得る
変数 = DocsList.getFileById( ファイルのID );

・パスを指定してFolderを得る
変数 = DocsList.getFolder( パスのテキスト );

・クエリを指定してFileを検索する
変数 = DocsList.find( クエリ );
変数 = DocsList.find( クエリ, 開始位置, 最大数 );

・指定した種類のファイルを得る
変数 = DocsList.getFilesByType( 種類の指定 );

もっとも基本となるのは、IDを指定してオブジェクトを取得するものでしょう。これなら必ず目的のオブジェクトが取得できます。ファイルの場合は、findを使うことで名前などからオブジェクトを取得することができます。findでは、検索されたオブジェクトすべてを配列として返すので、そこから必要なものをとり出し処理します。

また、getFilesByTypeは特定の種類のファイルのみを取得するのに役立ちます。これは引数にファイルの種類をテキストで指定します。現時点で利用可能な種類名には以下のようなものがあります。

"document", "spreadsheet", "presentation"

また、これらのメソッド類は、DocsListだけでなく、Folderにも用意されています。特定のフォルダの中にあるファイルやフォルダを取り出したりする場合には、まず目的のフォルダを取り出し、更にそのFoldergetFoldersgetFilesを呼び出して、必要なものを取り出せばよいわけです。

では、これらの簡単な利用例をあげておきましょう。下のサンプルは、getFolders/getFilesを使い、全フォルダと全ファイルを取得して、それをアクティブシートに出力するものです。ここでは、ファイルとフォルダをすべて変数に取り出した後、繰り返しを使ってその内容を書きだしています。名前とIDを取り出すメソッドがありますが、これはあとで改めて説明します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function listAllData() {
  var folders = DocsList.getFolders();
  var files = DocsList.getFiles();
  var sheet = SpreadsheetApp.getActiveSheet();
  var d = 1;
  sheet.getRange(d++,1).setValue("※フォルダの一覧");
  for(var i = 0;i < folders.length;i++){
    var f = folders[i];
    var nm = f.getName();
    var id = f.getId();
    sheet.getRange(d + i, 1).setValue(nm);
    sheet.getRange(d + i, 2).setValue(id);
  }
  d += folders.length + 1;
  sheet.getRange(d++,1).setValue("※ファイルの一覧");
  for(var i = 0;i < files.length;i++){
    var f = files[i];
    var nm = f.getName();
    var id = f.getId();
    sheet.getRange(d + i, 1).setValue(nm);
    sheet.getRange(d + i, 24).setValue(id);
  }
}

※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る