谷歌Apps脚本:如何创建一个文件夹中的文件?(Google Apps Script: How do

2019-06-26 23:06发布

我有一个Google Apps脚本创建多个文件,并将它们移动到一个文件夹。 有没有办法来直接放在一个文件夹中或者我首先要获得文件然后将其复制到相应的文件夹,然后从根文件夹这样删除它:

folder=DocsList.createFolder("MyFolder");
var file=DocsList.createFile(blob);
file.addToFolder(folder);
file.removeFromFolder(DocsList.getRootFolder());

这里的问题是,如果你打开驱动器,你看到的文件被首先放置在根文件夹,然后转移到MyFolder文件。 所以有一点滞后,直到removeFromFolder的执行。

Answer 1:

刚刚测试下面的代码

function Test() {
  DocsList.createFolder('Folder1').createFolder('Subfolder1').createFile('File1', 'Empty');
}

它按预期工作,即创建一个新的File1在新创建的文件夹中的文件My Drive\Folder1\Subfolder1



Answer 2:

在已超出DocsList不再工作,并由DriveAPI,谷歌应用程序服务和高级服务,谷歌已取代。

这里,我离开我的测试代码,这个代码创建文件夹 - 子 - 谷歌文件 - PDF - 并将其存储在文件夹和子文件夹以不同的方式,我希望会有所帮助

function Drive_2015() {   //busca un folder, si no lo hay lo crea y crea 2 sub carpetas un google document copiado en cada una de ellas
  var name='folder de prueba';
  var carpeta = DriveApp.getRootFolder().searchFolders("title contains '"+name+"'");
  if (carpeta.hasNext()===true) {    
      while (carpeta.hasNext()) {
      var folder = carpeta.next();
      Logger.log(folder.getName()+' '+folder.getId());
      }
  }else{
    var folder=DriveApp.getRootFolder().createFolder(name);

    var parent=DriveApp.getFolderById(folder.getId());   // get parent folder
    var folder2 =parent.createFolder('Subfolder');   // 1° way to create sub folder
    var folder3=folder.createFolder(name+1);// 2° way to create sub folder (and more easy)

    var doc = DocumentApp.create('Documento sta');
    var sheet = SpreadsheetApp.create('Spreadsheet sta');
    Utilities.sleep(300); // este retardo es para garantizar en el user-side la creacion del nuevo archivo
    var files = DriveApp.getFilesByName('Documento sta');// or Id var file = DriveApp.getFileById(doc.getId());
    while (files.hasNext()) {
      var file = files.next();
      Logger.log('ojo '+file.getName());
      file.makeCopy(folder3);
      file.makeCopy(folder2);
      var file2=file.makeCopy(folder);
      file2.setName('Acta individual del alumno')
      var blob = file2.getAs('application/pdf'); 
      var file2pdf = folder.createFile(blob);
      var file2pdf = DriveApp.getFileById(file2pdf.getId());
      var file2pdf=file2pdf.makeCopy(folder);
      Logger.log('se creó: '+file.getName()+' en la carpeta: '+folder.getName()+' el PDF es: '+file2pdf.getId());
      DriveApp.getFileById(file2pdf.getId()).setTrashed(true)
      DriveApp.getFileById(docid).setTrashed(true)
      }
  }
}


Answer 3:

截至2015年,你应该使用DriveApp服务在谷歌驱动器来管理文件。 DriveApp有一个文件夹类,允许您直接在文件夹中创建一个文件。

function createFilesInFolder() {
  //This creates the folder
  var folder = DriveApp.createFolder('My Folder');
  //This creates a file in the folder
  var file = folder.createFile('My File.txt', 
                               'Lorem ipsum', 
                               MimeType.PLAIN_TEXT);
}


Answer 4:

我只是想发表评论(但不具备50点声望)。

究其原因时高于原来的职位没有作品的答案是,.createFolder适用于DocsList.createFolder(在根目录下创建的文件夹),并Folder.createFolder这会在当前文件夹的子文件夹。

这可能是有目共睹的,但我 - 但我花了好一段时间才能实现:-)



文章来源: Google Apps Script: How do I create a file in a folder?