回答受付が終了しました
GASを使用し、Googleドライブ内の特定のフォルダから画像ファイル名やURLを一括で取得する方法を探しています。
GASを使用し、Googleドライブ内の特定のフォルダから画像ファイル名やURLを一括で取得する方法を探しています。 (1つの親フォルダ → 複数の子フォルダ → 内包する全ての画像ファイル名やURLを取得 といった感じです。) どなたかのブログにて以下のコードを見つけ、処理を回してみたのですが、途中で以下のようなエラーが出てしまいます。 TypeError: Cannot read properties of undefined (reading 'length') getPicID @ コード.gs:34 getPicID @ コード.gs:39 execution @ コード.gs:7 どのように修正するべきか検討もつかないため、GASにお詳しい方ご教示いただけないでしょうか? また、取得にあたり、いくつかの条件があります。 ・複数の子フォルダの中には、中身にファイルが存在しないフォルダもあるため、その場合は無視をして進めたいです。 ・ファイルの数がかなり多い(約100,000枚)ですが、全て確実に取得したいです。 function execution() { SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(2, 1, 1000, 4).clearContent() var Driveid = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(1, 8).getValue() getPicID(Driveid) } function getPicID(Driveid) { // フォルダ内のファイルを一括取得 var files = DriveApp.getFolderById(Driveid).getFiles(); // 配列を宣言 var Pic = []; // 配列に「名前」「URL」「ID」 while (files.hasNext()) { //一括取得したファイルの中から順に一つ取り出す var file = files.next(); //「名前」「説明」「URL」をそれぞれ格納 Pic.push([ file.getName(), file.getUrl(), file.getId(), "=image(\"https://drive.google.com/uc?id=" + file.getId() + "\")", ]); } var lastY = SpreadsheetApp.getActiveSpreadsheet().getLastRow() SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(lastY + 1, 1, Pic.length, Pic[0].length).setValues(Pic) var childFolders = DriveApp.getFolderById(Driveid).getFolders(); while (childFolders.hasNext()) { var childFolder = childFolders.next(); getPicID(childFolder.getId()) } } function getDriveID() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var ssId = ss.getId(); var parentFolder = DriveApp.getFileById(ssId).getParents(); var folderId = parentFolder.next().getId(); Browser.msgBox(folderId) }
Google ドライブ | JavaScript・123閲覧・50