如何获取最近文档的文件夹

时间:2019-09-29 15:02:24

标签: google-apps-script google-drive-api google-docs

我在google文档中运行脚本。如何获取此文档所在的最近文件夹,或者如何为我的文档的最近文件夹创建子文件夹?

我想创建一个子文件夹,但是这个子文件夹总是在Google驱动器的顶层创建。

`if (!DriveApp.getFoldersByName("myNewFolder")) DriveApp.createFolder("myNewFolder");`

所以看来活动文件夹是顶层文件夹。

没有DocumentApp.getMyFolder()DriveApp.getRecentFolder()方法。 可能有某种LINUX风格的东西吗?

DriveApp.createFolder("./myNewFolder");

那么,如何获得最近的文件夹,或者-甚至更好-如何在最近的文件夹中创建一个新文件夹,然后在此新文件夹中创建一个新文档?备注:仅当该文件夹不存在时,才应新建它。

非常感谢!

1 个答案:

答案 0 :(得分:0)

问题

在存储Google文档的Goolge驱动器中的文件夹(直接而不移动)中创建一个文件夹。

解决方案

  1. 此示例实用程序功能通过其ID获取文件的父级Folder

    /**
     * Gets file location;
     * @param {String} id document id;
     * @return {Folder|null} file's folder; 
     */
    function getLocation(id) {
      var file = DriveApp.getFileById(id);
      var folders = file.getParents();
      if(folders.hasNext()) {
        return folders.next();
      }else {
        return null;
      }
    }
    
  2. 获取当前文档的父文件夹(假设您的脚本已绑定到文档,否则可以通过其他方式获取ID):

    function createSubfolderInCurr() {
      var id = DocumentApp.getActiveDocument().getId();
      var folder = getLocation(id);
    
      if(folder) {
        //part 3 goes here;
      }
    }
    
  3. 检查子文件夹是否已存在,并根据需要创建一个子文件夹:

    var exists = folder.getFoldersByName('myNewFolder').hasNext();
    if(!exists) {
      var newfolder = folder.createFolder('myNewFolder');
    
      //part 4 goes here;
    }
    
  4. 关于在该文件夹中创建新文档,首先需要创建Document,然后以File的身份访问并将其从root移至新创建的文件夹:

    var newdoc = DocumentApp.create('NewFile');
    var newId = newdoc.getId();
    var newfile = DriveApp.getFileById(newId);
    
    DriveApp.removeFile(newfile);
    newfolder.addFile(newfile);
    

参考

  1. getParents()方法reference;
  2. getFoldersByName()方法reference(“文件夹”类);
  3. createFolder()方法referenceFolder类);
  4. create()方法referenceDocumentApp类);
  5. removeFile()方法referenceDriveApp类);
  6. addFile()方法referenceFolder类);