Googleドライブのフォルダの中にいくつかファイルが入っていて
ファイル名を昇順で並び替えて、IDと一緒に配列に入れて
このように取得したい
[
[日本語1, 1e0K3aBV5xxx],
[日本語2, 1OYdKFXVqxxx],
[英語1, 162f0ghDw63xxx],
[英語2, 1xHV36sf4A5xxx]
]
ということを実現したくて書いたコードです
コード.gs/************************************ フォルダ内のファイルを取得して ファイル名で昇順に並べ替えて ファイル名とIDの配列を返す ************************************/ function getFileArray() { var folderId = "ID"; var fileArray = []; var files = getFiles(folderId); for(var i = 0; i < files.length; i++) { var name = files[i]['name']; var id = files[i]['id']; fileArray.push([name, id]); } Logger.log(fileArray); } /************************************ フォルダ内のファイルを取得して 昇順にして返す ************************************/ function getFiles(folderId) { var fileProps = []; var folder = DriveApp.getFolderById(folderId); var contents = folder.getFiles(); while(contents.hasNext()) { var file = contents.next(); var name = file.getName(); var id = file.getId(); var obj = {}; obj["name"] = name; obj["id"] = id; fileProps.push(obj); } var sorted = objSort(fileProps); return fileProps; } /************************************ 並べ替える ************************************/ function objSort(fileProps) { var ascending = fileProps.sort(asc); return ascending; } /************************************ nameで昇順に並べ替える ************************************/ function asc(a, b){ var A = a.name; var B = b.name; if(A > B){ return 1; }else if(A < B ){ return -1; }else{ return 0; } } | 意訳この機能がやること フォルダIDを指定して 配列を用意して フォルダ内のファイルを取得して ファイルの数だけ繰り返す 一つずつファイル名を取得して IDも取得して 配列に追加して ログに出す この機能がやること 配列を用意して ドライブの中のフォルダを取得して フォルダ内のファイルを取得して 次のファイルがなくなるまで 次のファイルを取得して ファイル名を取得して ファイルIDを取得して オブジェクトを用意して nameを入れて idを入れて 配列に追加する 並べ替えて 返す この機能がやること 昇順で並べ替えて 返す この機能がやること 引数の1つ目のnameを取得して 引数の2つ目のnameを取得して AがBより大きければ 1を返して (A を B の後ろに並べる) AがBより小さければ -1を返して (A を B の前に並べる) それ以外なら 0を返す(A と B の並びを変えない) |
関連記事
Googleドライブで指定したフォルダ内にあるファイルidを取得したい
参考
Array.prototype.sort()