尝试从Google云端硬盘中的特定文件夹中复制特定文件

时间:2017-07-22 01:08:48

标签: file google-apps-script google-drive-api directory

我正在尝试在特定文件夹中搜索特定文件File1(通过另一个变量命名)。

确定文件后,我想复制一份文件。

这是我提出的,借助之前的帖子和许多谷歌搜索,但没有任何反应。

 var folderName = ConsultName;
 var files = DriveApp.getFoldersByName(folderName).next().getFiles();
 files.hasNext() && files == "File1" && files.next().makeCopy();

我试过没有files == "File1"makeCopy()函数最终会复制下一个文件。

我一直试图弄清楚这几天,但没有运气。

任何帮助都会有所帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

我以多种方式使用这些函数来加载和保存其他脚本中的数据。如果省略某些参数,则会自动提供默认值。我相信你可以使用这些构建块为自己想出一个复制解决方案

function loadFile(filename,folderID)
{
  var filename = (typeof(filename) !== 'undefined')? filename : DefaultFileName;
  var folderID = (typeof(folderID) !== 'undefined')? folderID : DataFolderID;
  var fldr = DriveApp.getFolderById(folderID);
  var file = fldr.getFilesByName(filename);
  var s = '';
  while(file.hasNext())
  {
    var fi = file.next();
    var target = fi.getName();
    if(target == filename)
    {
      s = fi.getBlob().getDataAsString();
    }
  }
  return s;
}

function saveFile(datstr,filename,append)
{
  var append = (typeof(append) !== 'undefined')? append : false;
  var filename = (typeof(filename) !== 'undefined')? filename : DefaultFileName;
  var datstr = (typeof(datstr) !== 'undefined')? datstr : '';
  var folderID = (typeof(folderID) !== 'undefined')? folderID : DataFolderID;
  var fldr = DriveApp.getFolderById(folderID);
  var file = fldr.getFilesByName(filename);
  var targetFound = false;
  while(file.hasNext())
  {
    var fi = file.next();
    var target = fi.getName();
    if(target == filename)
    {
      if(append)
      {
        datstr = fi.getBlob().getDataAsString() + datstr;
      }
      targetFound = true;
      fi.setContent(datstr);
    }
  }
  if(!targetFound)
  {
    var create = fldr.createFile(filename, datstr);
    if(create)
    {
      targetFound = true;
    }
  }
  return targetFound;
}