解決したい内容
Google Apps Scriptで2階層下にあるフォルダに対して指定した処理を複数回繰り返したい。
Top_Folder
|--2nd_Folder01
| |--3rd_Folder01
| |--4th_Folder01
| |--4th_Folder02
|
|--2nd_Folder02
|
...
といったフォルダ構成になっています。そのほか、ファイル名を取得するためのフォルダ(Other_Folder)が別に用意されています。
このOther_Folderにあるファイル名の一部と3rd_Folderの中にある4th_Folder群のフォルダ名を一致させたいため、繰り返し文を作りたいです。
すみませんが、よろしくお願いいたします。
問題点
while(folders.hasnext())で繰り返しを行うと、一つのファイルだけで反復が終わってしまいます。Other_Folderの中のファイルは複数あるため、同じ処理を全ファイルに行いたいです。hasnext()だと、一度ファイルの読み込みが終わると次に行ってしまいます。
1function sample_Function() { 2 var top_folder_id = 'Top_Folder_Id'; //一番上のフォルダID 3 var second_folders = DriveApp.getFolderById(top_folder_id).getFolders(); //下の階層フォルダ内のフォルダコレクション取得 4 var files = DriveApp.getFolderById('Other_Folder_Id').getFiles(); //ファイル名を取得したいフォルダ内のファイルコレクション取得 5 6 7 while(files.hasNext()) { 8 var file = files.next(); 9 10 while(second_folders.hasNext()) { 11 var second_folder = second_folders.next(); 12 var third_folders = second_folder.getFolders(); //さらに下の階層のフォルダコレクション取得 13 14 while(third_folders.hasNext()) { 15 var third_folder = third_folders.next(); 16 17 if(third_folder.getName().toUpperCase() == file.getName().slice(0,2).toUpperCase()){ 18 19 break; 20 } 21 22 } 23 24 } 25 26 } 27 28} 29
試したこと
フォルダの数が決まっているのでfor文でも試しましたが、うまくいきませんでした。hasnext()の状態を元に戻せるか、0やnullを代入してみましたが、エラーが出てしまいました^^;
回答3件
あなたの回答
tips
プレビュー