Я использую функцию MoveFiles() для копирования файла в другую папку. Но когда я его запускал, я пытаюсь удалить файл в исходной папке. После его удаления я увидел, что файл, который я переместил, также удален. Как сделать файл, который я переместил, также не будет удален? Tqvm
function MoveFiles() {
var SourceFolder = DriveApp.getFolderById('1WIZxuF_r9I-510Kfw9N0AImcS1Uf63dC');
var SourceFiles = DriveApp.getFolderById('1QfFl5JIfOYaTXZyFpuBNSMzBdBrXLll9').getFiles();
var DestFolder = DriveApp.getFolderById('1_03PnkJlt6mTo5bAExUMOdZVVkzMAUsA');
while (SourceFiles.hasNext()) {
var file = SourceFiles.next();
DestFolder.addFile(file);
SourceFolder.removeFile(file);
}
}
Попробуйте переключить строку кода для удаления и добавления. Согласно этой связанной должности:
Я обнаружил, что мне нужно отменить последние две строки (так что removeFile выполняется в первую очередь), иначе removeFile просто удаляет его из папки, в которую он был добавлен, а не из исходного родителя.
Я протестировал его и получил правильный результат, вот мой фрагмент кода:
function myFunction() {
var folder = DriveApp.getFolderById('sourceID');
var destinationFolder = "destinationID";
var contents = folder.getFiles();
while (contents.hasNext()){
var file = contents.next();
moveFiles(file.getId(),destinationFolder);
}
}
function moveFiles(sourceFileId, targetFolderId) {
var file = DriveApp.getFileById(sourceFileId);
file.getParents().next().removeFile(file);
DriveApp.getFolderById(targetFolderId).addFile(file);
}
Надеюсь это поможет.