前提・実現したいこと
GASを使ってGoogleドライブ上の複数のフォルダにあるファイルのファイル名とURLの一覧表を作成したいと思っています。
あるスプレットシートに「フォルダリスト」「ファイル取得」というシートを作成しました。
「フォルダリスト」のシートに、対象のフォルダのフォルダ名とURLを上から順に並べていきます。
(A列にフォルダ名、B列にそのフォルダのURLを記入)
スクリプトを実行すると、「ファイル取得」のシートに全ての対象フォルダ内のファイルのリストが作成されるようにしたいです。
発生している問題・エラーメッセージ
for文を使い、「フォルダリスト」で指定した各フォルダのファイル一覧を「list」に格納していきたかったのですが、
一巡ごとに「list」が上書きされてしまうらしく、完成した一覧表にはフォルダリストの最後の行にあるフォルダのファイルしか表示されません。
該当のソースコード
function GetFileListInAllFolder() {
//各種変数の設定 var ss; //「ss」という変数の型を「var」であると定義 var sheet; //「sheet」という変数の型を「var」であると定義 var range; //「range」という変数の型を「var」であると定義 var url; //「url」という変数の型を「var」であると定義 var folder_id; //「folder_id」という変数の型を「var」であると定義 var sheetName; //「sheetName」という変数の型を「var」であると定義 //「フォルダリスト」シートに記入された複数のフォルダ内のファイル情報を取得 sheetName = 'フォルダリスト'; //フォルダIDが書き込まれているシート名を指定。「フォルダリスト」というシートに目的の情報がある。 ss = SpreadsheetApp.getActiveSpreadsheet(); //「ss」はアクティブなスプレッドシートであると指定 sheet = ss.getSheetByName(sheetName); //「ss」の「sheetname」で指定されたシートを指定 var lastRow = sheet.getLastRow(); //「フォルダリスト」シートの最終行の行数を取得 //「フォルダリスト」シートに記入されたファイルを順番に「list」に取得 for(let i = 2; i <= lastRow; i++) { url = sheet.getRange(i, 2).getValue(); //「E3」のセルの座標を(行番号,列番号)の形で指定し、それに記入されたURLを取得 paths = url.split('/'), //取得したURLを「/」で区切る folder_id = paths.pop(), //上の行の「/」で区切られたURLの一番最後の部分に入っているフォルダIDを変数「folder_id」に代入 folder = DriveApp.getFolderById(folder_id); //「folder」は、「folder_id」で指定されたフォルダ files = folder.getFiles(); //「files」は「folder」の中のファイル list = []; //「list」という配列を宣言(よく分かってない) //フォルダ内のファイルを「list」に取得していく処理と思われる while(files.hasNext()) { var buff = files.next(); list.push([buff.getName(), buff.getUrl()]); }; }; //書き込むシートと範囲を設定 sheetName = 'ファイル名取得'; //書き込みを行うシート名を指定。「ファイル名取得」というシートに書き込む ss = SpreadsheetApp.getActive(); //「ss」はアクティブなスプレッドシートであると指定 sheet = ss.getSheetByName(sheetName); //「ss」の「sheetname」で指定されたシートを指定 // 対象の範囲にまとめてデータを書き出し rowIndex = 1; //データを書き出す範囲の始点行。現在は「1」が直接入力されている colIndex = 1; //データを書き出す範囲の始点列。「1」は「A列」であることを示す。 range = sheet.getRange(rowIndex, colIndex, list.length, list[0].length); //書き込み範囲を(始点行,始点列,終点行,終点列)で指定 range.setValues(list);
}
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/23 01:01