Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本:在现有父文件夹中创建并公开共享文件夹_Google Apps Script_Directory_Parent_Sharing_Subdirectory - Fatal编程技术网

Google apps script Google脚本:在现有父文件夹中创建并公开共享文件夹

Google apps script Google脚本:在现有父文件夹中创建并公开共享文件夹,google-apps-script,directory,parent,sharing,subdirectory,Google Apps Script,Directory,Parent,Sharing,Subdirectory,因此,我想在现有的父文件夹中创建并(公开)共享一个新文件夹 例如:\2013年9月\[此处新建文件夹] 当然,你可以: 使用createFolder在根目录中创建文件夹 使用addToFolder将新创建的文件夹复制到给定的父文件夹中 使用removeFromFolder从根目录中删除文件夹 但是,公开共享该文件夹是不可能的 实际上,如果您尝试使用:setSharing(DriveApp.Access.anywhere,DriveApp.Permission.EDIT) 您将得到:“TypeEr

因此,我想在现有的父文件夹中创建并(公开)共享一个新文件夹

例如:\2013年9月\[此处新建文件夹]

当然,你可以:

  • 使用createFolder在根目录中创建文件夹
  • 使用addToFolder将新创建的文件夹复制到给定的父文件夹中
  • 使用removeFromFolder从根目录中删除文件夹
  • 但是,公开共享该文件夹是不可能的

    实际上,如果您尝试使用:setSharing(DriveApp.Access.anywhere,DriveApp.Permission.EDIT)

    您将得到:“TypeError:在对象文件夹中找不到函数SetShareing。”

    没错,上面的DriveApp功能似乎只适用于使用DriveApp.createFolder创建的文件夹

    当然,没有办法简单地:

  • 使用DriveApp.createFolder在根目录中创建文件夹
  • 使用setSharing公开共享新创建的文件夹
  • 将新文件夹移动到所需的子文件夹
  • 。。。因为没有移动的方法


    有人找到了这样一个问题的解决方案吗?

    DocsList和DriveApp的组合可能会很有用

    /* CODE FOR DEMONSTRATION PURPOSES */
    function main() {
      var parentFolder = DocsList.getFolder('September 2013');
      var idNewFolder = parentFolder.createFolder('New Folder').getId();
      var newFolder = DriveApp.getFolderById(idNewFolder);
      newFolder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
    }
    

    DocsList和DriveApp的组合可能很有用

    /* CODE FOR DEMONSTRATION PURPOSES */
    function main() {
      var parentFolder = DocsList.getFolder('September 2013');
      var idNewFolder = parentFolder.createFolder('New Folder').getId();
      var newFolder = DriveApp.getFolderById(idNewFolder);
      newFolder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
    }
    

    您不需要使用2个服务,driveApp已经内置了您所需的所有服务

    你只是忘记了你可以从另一个文件夹创建一个文件夹,而不仅仅是从根目录。。。所以你不需要移动任何东西

    例如:

    function createSharedFolder() {
      var parent = DriveApp.createFolder('testFolder');
      var child = parent.createFolder('child');
      child.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
    }
    
    要解决这些简单问题,请考虑使用autocomplete,请参见下面的屏幕截图:

    如果您的父文件夹已经存在,或者您对它不确定,那么下面是一个处理所有用例的函数:(+一个测试该函数的函数)


    您不需要使用2个服务,driveApp已经内置了您所需的所有服务

    你只是忘记了你可以从另一个文件夹创建一个文件夹,而不仅仅是从根目录。。。所以你不需要移动任何东西

    例如:

    function createSharedFolder() {
      var parent = DriveApp.createFolder('testFolder');
      var child = parent.createFolder('child');
      child.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
    }
    
    要解决这些简单问题,请考虑使用autocomplete,请参见下面的屏幕截图:

    如果您的父文件夹已经存在,或者您对它不确定,那么下面是一个处理所有用例的函数:(+一个测试该函数的函数)


    由于父文件夹已经存在,有一种直接的方法可以通过DriveApp找到它?DriveApp缺少getFolder(path)功能,这就是为什么我更喜欢在这里使用DocsList。确实。。。谷歌人似乎喜欢迭代器!,也就是说,迭代器非常好,代码仍然足够短,所以一点也不差。通常解决问题的方法不止一种,迭代器是另一种选择,但DocsList可以直接这样做。因为父文件夹已经存在,所以有一种直接的方法可以通过DriveApp找到它?DriveApp缺少getFolder功能(路径),这就是为什么我更喜欢在这里使用DocsList。事实上……谷歌人似乎也喜欢迭代器!他们说迭代器也很好,代码也很短,所以一点也不差。通常解决问题的方法不止一种,迭代器是另一种选择,但DocsList可以直接这样做。我不知道为什么会这样回答被否决-我很想听到谁这样做,以及我们都可以学习的解释。就个人而言,我喜欢这个和@sergeinsas答案:+1两者都有!@Mogsdad我没有否决它,但可能是因为DocsList已经被带有错误修复的驱动器应用程序“取代”了(我想他们把DocsList放在那里是为了不完全破坏旧脚本。)看到这一点,我想DocsList最终会被弃用,所以最好避免。我不知道为什么这个答案会被否决——我很想听听谁这样做,并给出一个我们都可以从中学习的解释。就个人而言,我喜欢这个和@sergeinsas答案:+1都是!@Mogsdad我没有否决它,但可能是因为DocsList已被“替换”为带有错误修复的驱动器应用程序等(我认为他们将DocsList放在那里,以便不完全破坏旧脚本)。请看这一点。我猜DocsList最终将被弃用,因此最好避免它。