GoogleDrive内でGoogleAppsScriptによる大きいファイルサイズのファイルコピーに失敗する
下記のGoogleAppsScriptを使おうとすると,コピーの部分で失敗します。
IDがAAAというフォルダ以下の全フォルダ・ファイルをIDがBBBというフォルダにコピーし,コピー処理終了後にAAAというフォルダ以下のフォルダ・ファイルをすべてゴミ箱へ移動させるスクリプトになっています。
IDがAAAというフォルダのファイル・フォルダをIDがBBBというフォルダにコピーしようとすると,途中で「上限を超えています: DriveApp(行 19、ファイル「コード」)」というエラーが出て,一部のみコピーされて大部分はコピーに失敗します。
行19は,「file.makeCopy(file.getName(), dest);」が該当します。
コピー元ファイルは映像ファイルなので,1ファイル2Gbyte程度,一日100ファイル程度になります。
一日一度,GoogleDrive内で別フォルダに移動させようとしています。
なお対象フォルダを変更して,小さなファイル(PDF等)では問題なくファイルコピー,その後の元ファイル削除ができることを確認しています。
Googleに申請して,EarlyAccessProgramには参加済みです。
またG Suiteビジネスを契約しています。
ファイルサイズ等の問題でエラーが避けられない場合,別の方法でコピーをさせることはできるのでしょうか。
もしくは,エラーを回避する他の方法はあるのでしょうか。
よろしくお願いします。
function myFunction() {
var folders = DriveApp.getFoldersByName("映像");
var dest = DriveApp.getFolderById('BBB');
while(folders.hasNext()) {
var folder = folders.next();
folderCopy(folder, dest);
}
listtrash();
}
function folderCopy(folder, dest) {
var folders = folder.getFolders();
var files = folder.getFiles();
while(files.hasNext()) {
var file = files.next();
// file.makeCopy(dest);とすると、****のコピーというファイル名になるので…。
file.makeCopy(file.getName(), dest);
}
while(folders.hasNext()) {
var subFolder = folders.next();
var folderName = subFolder.getName();
var copyFolder = dest.createFolder(folderName);
folderCopy(subFolder, copyFolder);
}
}
function listtrash() {
var removefolders = DriveApp.getFolderById('AAA');
var removefolder = removefolders.next();
var subfolders = removefolder.getFolders();
while(subfolders.hasNext()) {
var trashFolder = subfolders.next();
trashFolder.setTrashed(true)
}
}