前提・実現したいこと
googleドライブ内の階層は以下のようになっています。
親フォルダ
├─フォルダA1
│ ├─フォルダA2
│ │ └─ファイルa2
│ └─ファイルa1
│
├─フォルダB1
│ ├─フォルダB2
│ │ └─ファイルb2
│ └─ファイルb1
│
├─フォルダC1
│ ├─フォルダC2
│ │ └─ファイルc2
│ └─ファイルc1
︙
フォルダA1,B1,C1...の名称とファイルa2,b2,c2...のIDを全てスプレッドシートに書き出したいです。(その他の情報は不要)
発生している問題・エラーメッセージ
フォルダA1,B1,C1...の名称と**ファイルa1,b1,c1...**のIDが取得され、以下のエラーが表示されます。
Exception: 指定された ID のアイテムは見つからなかったか、アクセスする権限がありません。(行 12
該当のソースコード
function file_open() { var sheet = SpreadsheetApp.getActiveSheet(); var key = DriveApp.getFolderById('親フォルダのID').getId(); var name = "" var i = 0 //フォルダを処理する行位置 var j = 0 //サブフォルダを出力する行位置 sheet.clear() //シートをクリア do { var folder1 = DriveApp.searchFolders("'"+key+"' in parents"); //フォルダ一覧を取得 while(folder1.hasNext()){ //フォルダ一覧からフォルダを順に取り出す const childFolder = folder1.next(); const childFolderName = childFolder.getName(); const childFolderId = childFolder.getId(); var folder2 = DriveApp.getFolderById(childFolderId).getFiles(); while(folder2.hasNext()){ i++ //シートにフォルダ名称とIdを出力 var folder = folder2.next(); sheet.getRange(i, 1).setValue(name + childFolderName); sheet.getRange(i, 2).setValue(folder.getUrl()); } } j++; //シートからフォルダを取得し次へ name = sheet.getRange(j, 1).getValue() + " > "; key = sheet.getRange(j, 2).getValue(); } while (key != ""); //処理するフォルダがなくなるまで }
エラーについてですが、ファイルは確かに存在しますし自分で作成したものですので権限もあるはずです。
いろいろと関係しそうなサイトを周り試しましたが、どうしてもうまく動きません。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/23 03:11 編集