File 使用文件名将文件从一个文件夹复制到Google Drive中的另一个文件夹

File 使用文件名将文件从一个文件夹复制到Google Drive中的另一个文件夹,file,google-apps-script,google-drive-api,copy,File,Google Apps Script,Google Drive Api,Copy,我有两个文件夹在谷歌驱动器帐户。“文件夹1”和“文件夹2”。 在“文件夹1”中有多个文件。假设有一个文件名Test.txt我想使用Driveapp将Test.txt文件复制到“文件夹2”。我找到了代码,但它只能与“文件唯一ID”一起使用。我们是否可以仅通过文件名来创建它 function copyfile() { var file = DriveApp.getFileById("1pkwQ9te-EtpqC_NC3BoHzOTUoC7axZDcAfxrqMgslwg"); var sourc

我有两个文件夹在谷歌驱动器帐户。“文件夹1”和“文件夹2”。 在“文件夹1”中有多个文件。假设有一个文件名
Test.txt
我想使用Driveapp将
Test.txt
文件复制到“文件夹2”。我找到了代码,但它只能与“文件唯一ID”一起使用。我们是否可以仅通过文件名来创建它

function copyfile() {

var file = DriveApp.getFileById("1pkwQ9te-EtpqC_NC3BoHzOTUoC7axZDcAfxrqMgslwg");

var source_folder = DriveApp.getFolderById("0B8_ub-Gf21e-fkxjSUwtczJGb3picl9LUVVPbnV6Vy1aRFRWc21IVjRkRjBPTV9xMWJLRFU")

var dest_folder = DriveApp.getFolderById("0B8_ub-Gf21e-flJ4VmxvaWxmM2NpZHFyWWxRejE5Y09CRWdIZDhDQzBmU2JnZnhyMTU2ZHM")
// Make a backup copy.

var file2 = file.makeCopy('BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + file.getName());
dest_folder.addFile(file2);

source_folder.removeFile(file2);
  }
如果我使用文件名而不是文件Unqiue ID,则会出现以下错误:

“TypeError:在对象FileIterator中找不到函数makeCopy。”

  • 您希望通过更改文件名将源文件夹中文件名为
    Test.txt
    的文件复制到目标文件夹
  • 您想使用文件名复制文件
  • 您希望使用谷歌应用程序脚本实现这一点
如果我的理解是正确的,这次修改怎么样

修改点:
  • 要使用文件名检索文件,请使用
    getFilesByName()
    的方法。在本例中,返回“FileIterator”,因为相同文件名的文件可以存在于Google Drive中。
    • 当文件名用于
      getFileById(fileId)
      时,会发生错误
    • 使用此选项,为了检索特定文件夹中的文件,请修改为
      source\u folder.getFilesByName(filename)
  • 复制文件时,可以使用。这样,文件可以直接复制到目标文件夹
当您的脚本被修改时,它将变成如下所示

模式1: 在此模式中,使用文件夹ID

修改脚本:
  • 运行脚本时,如果源文件夹中存在文件名为
    Test.txt
    的文件,则会将该文件复制到目标文件夹
模式2: 在此模式中,使用文件夹名称

修改脚本:
  • 在这种情况下,它假定
    文件夹1
    文件夹2
    的文件夹存在于Google驱动器中
参考资料:
如果我误解了你的问题,而这不是你想要的方向,我道歉

编辑:
  • 您想复制文件夹1中的两个文件“Test.txt”和“Test2.txt”
对于这种情况,下面的脚本如何

示例脚本1:
非常好,非常感谢。还有一个问题。如果我想复制多个文件,可以吗?在“文件夹1”中有两个文件“Test.txt”和“Test2.txt”要复制到“文件夹1”。谢谢again@firekid2018谢谢你的回复。对于您的额外请求,我又添加了两个示例脚本。你能确认一下吗?若这些不是你们想要的,我道歉。谢谢你们,代码运行良好。我不知道是否违反规则。但现在我需要多一点帮助。不确定是否需要为它创建另一个主题。如果违反规则,请告诉我。在我看到你的代码后,我有了另一个想法来实现我的目标。“var filenames=”我们可以从文本文件中读取文件名吗?假设我在我的网站“abc.com/filename.txt”中上载了一个文本文件,在“filename.txt”中,我逐行列出了文件名(屏幕截图:)。Test.txt Test2.txt和script var filenames=value将从文本文件“abc.com/filename.txt”中读取。可能吗?@firekid2018谢谢你的回复。我很高兴你的问题解决了。我愿意支持你。但你评论的问题是新问题,这与你的问题不同。那么,你能通过包含详细信息将其作为新问题发布吗?因为当你的初始问题被评论改变时,看到你的问题的其他用户会感到困惑。通过将其作为新问题发布,包括我在内的用户可以想到您的新问题。当时,。如果你能合作解决你的新问题,我很高兴。
function copyfile() {
  var filename = "Test.txt";
  var sourceFolderId = "0B8_ub-Gf21e-fkxjSUwtczJGb3picl9LUVVPbnV6Vy1aRFRWc21IVjRkRjBPTV9xMWJLRFU";
  var destinationFolderId = "0B8_ub-Gf21e-flJ4VmxvaWxmM2NpZHFyWWxRejE5Y09CRWdIZDhDQzBmU2JnZnhyMTU2ZHM";
  var source_folder = DriveApp.getFolderById(sourceFolderId);
  var file = source_folder.getFilesByName(filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFolderById(destinationFolderId);
    var srcFile = file.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}
function copyfile() {
  var filename = "Test.txt";
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var file = source_folder.getFilesByName(filename);
  if (file.hasNext()) {
    var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
    var srcFile = file.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}
function copyfile() {
  var filenames = ["Test.txt", "Test2.txt"];
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  for (var i = 0; i < filenames.length; i++) {
    var filename = filenames[i];
    var file = source_folder.getFilesByName(filename);
    if (file.hasNext()) {
      var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
      var srcFile = file.next();
      var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
      srcFile.makeCopy(newName, dest_folder);
    }
  }
}
function copyfile() {
  var sourceFolderName = "Folder 1";
  var destinationFolderName = "Folder 2";
  var source_folder = DriveApp.getFoldersByName(sourceFolderName).next();
  var files = source_folder.getFiles();
  var dest_folder = DriveApp.getFoldersByName(destinationFolderName).next();
  while (files.hasNext()) {
    var srcFile = files.next();
    var newName = 'BACKUP ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + '.' + srcFile.getName();
    srcFile.makeCopy(newName, dest_folder);
  }
}