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

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

【GAS】getFiles()で取得したデータをファイル名順に並び替える

   

Google Apps Script(GAS)でGoogle1ドライブ内のファイル一覧を出力させる際に更新日時順に出力されます。これをファイル名順に並び替えて出力する方法について紹介します。

今回の例で使うファイルリストは以下のような構成になっています。

まず、ファイル一覧を取得するgetFilesメソッドにはソートするオプションは存在しません。以下のソースコードを実行してみましょう。

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

 

最終更新日の新しい順に出力されることがわかるかと思います。

 

これをファイル名順にソートするためには一度連想配列化させてそれをソートさせます。連想配列をソートする詳細な解説はこの記事(【GAS】連想配列の特定の要素で昇順・降順に並び替える方法)を参考にしてください。

ソースコードは以下の通り。

const folderID = "(フォルダーID)";
let folder = DriveApp.getFolderById(folderID);
let files = folder.getFiles();
let arr = [];
while(files.hasNext()) {
  var docs = files.next();
  // 一旦配列にプッシュ
  arr.push({filename:docs.getName(), id:docs.getId()});
}

//配列のfilename要素でソート
arr = arr.sort(function(a, b) {
  return (a.filename < b.filename) ? -1 : 1;  //オブジェクトの降順ソート
});

//出力
for(d of arr){
  console.log(d.filename+' : '+d.id);
}
 

 

実行結果はご覧の通り。ファイル名順に出力されました。

 

スポンサーリンク

 - Google Apps Script