質問
https://nujonoa.com/how-to-retrieve-all-files-in-a-specific-folder/
こちらのページを参考に、Googleドライブの特定フォルダ以下にあるファイルのファイル名とURLを抽出し、一覧を作成できるようにしたいのですが、エラーが発生してしまいます。
スプレッドシートには2シートあり、スクリプト実行のボタンを設置したいのは【1】のシートですが、ファイル名とURLは、非表示になっている【2】のシートに打ち出されるようにしたいです。
発生している問題・エラーメッセージ
TypeError: Cannot read property 'length' of undefined getPicID @ コード.gs:32 execution @ コード.gs:7
該当のソースコード
GAS
1function execution() { 2 3 SpreadsheetApp.getActiveSpreadsheet().getSheetByName('【2】のシート').getRange(2, 1, 99999, 4).clearContent() 4//特定のフォルダを指定する 5 var Driveid = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('【2】のシート').getRange(1, 8).getValue() 6//親となるフォルダを関数に渡す 7 getPicID(Driveid) 8 9} 10 11 12function getPicID(Driveid) { 13 14 // フォルダ内のファイルを一括取得 15 var files = DriveApp.getFolderById(Driveid).getFiles(); 16 // 配列を宣言 17 var Pic = []; 18 // 配列に「ファイル名前」「URL」 19 while (files.hasNext()) { 20 //一括取得したファイルの中から順に一つ取り出す 21 var file = files.next(); 22 //「ファイル名」「URL」をそれぞれ格納 23 Pic.push([ 24 file.getName(), 25 file.getUrl(), 26 27 ]); 28 } 29//最終行を取得 30 var lastY = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('【2】のシート').getLastRow() 31//最終行に追加 32 SpreadsheetApp.getActiveSpreadsheet().getSheetByName('【2】のシート').getRange(lastY + 1, 1, Pic.length, Pic[0].length).setValues(Pic) 33//子フォルダを格納 34 var childFolders = DriveApp.getFolderById(Driveid).getFolders(); 35//子フォルダがなくなるまで実行 36 while (childFolders.hasNext()) { 37 var childFolder = childFolders.next(); 38//子フォルダのIDを取得し、同じ関数に返す。 39 getPicID(childFolder.getId()) 40 } 41 42}
あなたの回答
tips
プレビュー