在谷歌脚本中移动文件

时间:2017-11-26 16:07:06

标签: javascript file-upload google-drive-api

我使用函数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);
 }
}

1 个答案:

答案 0 :(得分:0)

尝试切换代码行以进行删除和添加。根据这个相关的SO post

  

我发现我需要反转最后两行(所以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);
}

希望这有帮助。