ArtA
ArtA

Reputation: 15

Trying to copy specific file from specific folder in Google Drive

I'm trying to search for a specific file File1 in a specific folder (named through another variable).

Once I have identified the file, I want to make a copy of the file.

This is what I came up with, with the help of previous posts and many google searches but nothing happens.

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

I've tried without the files == "File1" and the makeCopy() function will end up copying whatever file is next.

I've been trying to figure this out for several days, but haven't had any luck.

Any help would be helpful. Thanks!

Upvotes: 0

Views: 76

Answers (1)

Cooper
Cooper

Reputation: 64072

I use these functions in several ways for loading and saving data in other scripts. If some arguments are omitted defaults are provided automatically. I believe you can use these building blocks to conjure up a copy solution for yourself

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;
}

Upvotes: 1

Related Questions