前提
GAS初心者です
Googleフォルダ内にある複数のファイルを、別のGoogleフォルダ2にコピーするGASを作成したいです
実現したいこと
・スプレットシートにコピー元のフォルダIDとコピー先のフォルダIDを記載する
・GASを実行したらコピー元フォルダ内にある全てのファイルが、コピー先フォルダ内に複製する
発生している問題・エラーメッセージ
エラーの発生はなし フォルダ内にあるファイルではなくフォルダ毎ファイルされてしまう ネット上に落ちているコードを使っているので内容はよく分かっていないです・・・すみません
該当のソースコード
VBA
1function copyandmove() { 2 const ss = SpreadsheetApp.getActiveSpreadsheet(); 3 const sheets=ss.getSheetByName("シート2"); 4 var srcFolderId = sheets.getRange("A1").getValue();// コピー元フォルダ 5 var dstFolderId = sheets.getRange("A2").getValue();// コピー先フォルダ 6 7 var srcFolder = DriveApp.getFolderById(srcFolderId); 8 var dstFolder = DriveApp.getFolderById(dstFolderId); 9 10 var dstFolderName = srcFolder.getName(); 11 12 var newFolder = dstFolder.createFolder(dstFolderName); 13 copy(srcFolder, newFolder);//コピー元,コピー先 14} 15 16function copy(srcFolder, newFolder){ 17 var srcFiles = srcFolder.getFiles();//フォルダ内ファイルをゲット 18 while(srcFiles.hasNext()) { 19 var srcFile = srcFiles.next(); 20 Logger.log(srcFile.getName()); 21 srcFile.makeCopy(srcFile.getName(), newFolder); 22 } 23 var srcFolders = srcFolder.getFolders();//フォルダ内フォルダをゲット 24 while(srcFolders.hasNext()) { 25 var nextSrcFolder = srcFolders.next(); 26 Logger.log(nextSrcFolder.getName()); 27 var nextNewFolder = newFolder.createFolder(nextSrcFolder.getName()); 28 copy(nextSrcFolder, nextNewFolder); //再帰処理 29 } 30}
試したこと
GAS初心者で、拾ってきたコードで試しております。
そのため、どのように修正すべきかがわからず困っております。
問題点とは別の話ですが、直接コードにフォルダIDを指定するのではなく、
スプレットシートのセルに記載したIDを参照するようなコードに書き換えています。
自身だけはなく複数名で利用するためです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー