非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【GAS】Googleドライブのファイル一覧の取得とスプレッドシート用ファイルかどうかを判別する方法

   

Googleドライブの指定フォルダ内のファイル一覧をGoogle Apps Script(GAS)を用いて取得する方法について書きます。また、取得したファイルがスプレッドシートまたはドキュメント用のファイルかどうか判別する方法についても紹介したいと思います。

指定フォルダのフォルダIDを取得

テスト用に以下のフォルダを作ってその中に5つのファイルを置いておきました。それぞれドキュメントだったりスプレッドシートだったりいろいろな種類のファイルです。赤い四角で囲ったフォルダIDをメモしておきましょう。

 

 

ファイル一覧を取得するGASソースコード

こちらがソースコードです。指定フォルダ内のファイル名とファイルIDを出力します。DriveAppクラスのgetFolderByIdメソッドにフォルダIDを渡すことでフォルダ内の情報を得ることができるわけですね。

folder = DriveApp.getFolderById('フォルダID');
files = folder.getFiles();
while(files.hasNext()) {
  var buff = files.next();
  console.log(buff.getName()+' : '+buff.getId());
}
 

 

実行結果

実行結果がこちらです。降順ですがフォルダ内のすべてのファイルとファイルIDの一覧を出力させることができました。

 

 

スプレッドシートやドキュメントを判別する

さて、このままだとこのファイルがどんなアプリファイルかがわかりません。Windowsみたいに拡張子があれば判別できますがGoogleドライブにはありません。

ファイルリストの中からスプレッドシートまたはドキュメントファイルだけを判別するにはどうすれば良いのでしょうか。

今のところ僕としてはDocumentApp または SpreadsheetAppクラスをかまして例外処理で判別する方法を採用しています。(他に良い方法があったら教えてください)

こちらがソースコードです。 スプレッドシートとドキュメントのみを判別させています。

folder = DriveApp.getFolderById('フォルダID');
files = folder.getFiles();
while(files.hasNext()) {
  var buff = files.next();
  var attr = '???';
  try {
  var doc  = DocumentApp.openById(buff.getId());
    attr = 'Google Document';
  }catch(e){}
  try {
    var doc  = SpreadsheetApp.openById(buff.getId());
    attr = 'Google Spreadsheet';
  }catch(e){}
  console.log(buff.getName()+' : '+buff.getId()+' : '+attr);
}
 

 

実行結果はこちらです。うまく判別できました。

 

スポンサーリンク

 - Google Apps Script