Google Apps Script入門
ファイルの一覧取得・削除(File)

Google Apps Script(GAS)の入門解説です
公開日:2017-01-24 最終更新日:2017-01-24

第38回.ファイルの一覧取得・削除(File)

Google Apps Script で、フォルダ内のファイル一覧を取得したり、


フォルダ内にファイルを作ったり削除したりするスクリプトの書き方を解説します。

使用するクラスは、

DriveApp
Folder
File
FolderIterator
FileIterator

これらのメソッドを使います。


root直下のファイル一覧(サブフォルダは対象外)

function mySample38_1() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var id = DriveApp.getRootFolder().getId(); //rootフォルダ
  var folder = DriveApp.getFolderById(id)
  var files = folder.getFiles() //ファイル一覧
  var i = 0 //ファイルを格納する行位置
  sheet.clear() //シートをクリア
  while(files.hasNext()){
    //シートにファイル名称とIdを出力
    i++
    var file = files.next();
    sheet.getRange(i, 1).setValue(file.getName());
    sheet.getRange(i, 2).setValue(file.getId());
  }
}

A列にファイル名、B列にファイルIDを出力しています。

rootフォルダ以下の、全ファイルを取得し、シートに出力しています。

サブフォルダは検索していません。
概ねそのまま使えますが、
最初のrootを指定フォルダにすれば、そのフォルダ以下のファイルを取得できます。
また、出力先をシートではなく配列にする等の変更を適宜変更してお使いください。


root以下の全ファイル一覧(サブフォルダも対象)と

function mySample38_2() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var root = DriveApp.getRootFolder()
  var key = root.getId(); //rootフォルダ
  var name = ""
  var i = 0 //フォルダを処理する行位置
  var j = 0 //サブフォルダを処理する行位置
  var folderlist = new Array(); //フォルダ一覧格納配列
  folderlist.push([root,key]);
  i++;
  do {
    //フォルダ一覧を取得
    var folders = DriveApp.searchFolders("'"+key+"' in parents");
    //フォルダ一覧からフォルダを順に取り出す
    while(folders.hasNext()){
      //配列にフォルダ名称とIdを出力
      var folder = folders.next();
      var temparray = new Array();
      temparray.push(name + folder.getName());
      temparray.push(folder.getId());
      folderlist.push(temparray);
      i++;
    }
    //シートからフォルダを取得し次へ
    if (j < i) {
      name = folderlist[j][0] + " > ";
      key = folderlist[j][1];
    }
    j++;
  } while (j <= i); //処理するフォルダがなくなるまで
  sheet.clear() //シートをクリア
  j = 1 //シートへの出力行
  for (i=0; i<=folderlist.length-1; i++) {
    var key = DriveApp.getFolderById(folderlist[i][1]).getId();
    //var files = DriveApp.searchFiles("mimeType = 'application/vnd.google-apps.spreadsheet' and '"+key+"' in parents");
    var files = DriveApp.searchFiles("'"+key+"' in parents");
    while(files.hasNext()){
      var file = files.next();
      sheet.getRange(j, 1).setValue(folderlist[i][0]);
      sheet.getRange(j, 2).setValue(folderlist[i][1]);
      sheet.getRange(j, 3).setValue(file.getName());
      sheet.getRange(j, 4).setValue(file.getId());
      j++;
    }
  }
}

A列にフォルダ名、B列にフォルダID、C列にファイル名、D列にファイルIDを出力しています。

rootフォルダ以下の、全サブフォルダ全ファイルを取得し、シートに出力しています。
フォルダの一覧は、配列に入れて処理しています。
概ねそのまま使えますが、
最初のrootを指定フォルダにすれば、そのフォルダ以下のファイルを取得できます。
また、出力先をシートではなく配列にする等の変更を適宜変更してお使いください。

ファイルを削除

function mySample38_3() {
  var files = DriveApp.getFilesByName("test1")
  if (files.hasNext()) {
   var file = files.next();
   file.setTrashed(true) //ごみ箱へ
  }
}

"test1"ファイルを全て削除しています。


ファイル一覧の取得は、
スプレッドシートが増えてきたり、複数人で別のスプレッドシートを保存し、それを集めたりと言ったときには必須になります。




同じテーマ「Google Apps Script入門」の記事

第30回.並べ替え
第31回.入力規則
第32回.グラフ
第33回.表示の固定
第34回.シート保護
第35回.スプレッドシートが非常に遅い、高速化するには
第36回.フォルダとファイルを扱う(DriveApp)
第37回.フォルダの一覧取得・作成・削除(Folder)
第38回.ファイルの一覧取得・削除(File)
Excel流の最終行の取得
Twitter Bot 作成


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ