首页 文章

Google Apps脚本:如何在文件夹中创建文件?

提问于
浏览
7

我有一个Apps脚本,可以创建多个文件并将它们移动到一个文件夹中 . 有没有办法将文件直接放在一个文件夹中,或者首先必须获取该文件,然后将其复制到相应的文件夹,然后将其从根文件夹中删除,如下所示:

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

这样做的问题是,如果您打开驱动器,您会看到文件首先放在根文件夹中,然后移动到MyFolder . 所以在执行removeFromFolder之前有一点滞后 .

4 回答

  • 8

    我只想评论(但没有50个声望点) .

    当原始帖子没有时,上述答案的原因是.createFolder既适用于DocsList.createFolder(在根目录中创建文件夹),也适用于在当前文件夹中创建子文件夹的Folder.createFolder .

    除了我之外,每个人都可能是显而易见的 - 但我花了很长时间才意识到:-)

  • 10

    刚刚测试了以下代码

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

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

  • 4

    DocsList不再有效,已被DriveAPI,Google App Services和高级Google服务所取代 .

    在这里我留下我的测试代码,这段代码创建文件夹 - 子文件夹 - 谷歌文件 - 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)
          }
      }
    }
    
  • 6

    自2015年起,您应使用DriveApp服务管理Google Cloud 端硬盘中的文件 . DriveApp有一个Folder类,允许您直接在文件夹中创建文件 .

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

相关问题