Google drive api Google驱动器选择器:仅将Feature.MINE_与Feature.SUPPORT_驱动器一起使用

Google drive api Google驱动器选择器:仅将Feature.MINE_与Feature.SUPPORT_驱动器一起使用,google-drive-api,google-picker,google-drive-shared-drive,google-drive-picker,Google Drive Api,Google Picker,Google Drive Shared Drive,Google Drive Picker,我正在尝试创建一个显示以下视图的Google驱动器选择器: “文件夹”视图,显示当前用户的文件夹树,允许他仅选择当前用户拥有的文件 “最近”视图,显示当前用户拥有的最新打开的文件 “共享驱动器”视图(注:以前称为“团队驱动器”),显示当前用户有权访问的共享驱动器(他不是文件的所有者,因为共享驱动器文件由用户的G套件平台所有) 第一次尝试:功能。仅使用功能挖掘。支持驱动器 我尝试的第一件事是在PickerBuilder上启用两个功能MINE\u ONLY和SUPPORT\u DRIVES,但是这会

我正在尝试创建一个显示以下视图的Google驱动器选择器:

  • “文件夹”视图,显示当前用户的文件夹树,允许他仅选择当前用户拥有的文件

  • “最近”视图,显示当前用户拥有的最新打开的文件

  • “共享驱动器”视图(注:以前称为“团队驱动器”),显示当前用户有权访问的共享驱动器(他不是文件的所有者,因为共享驱动器文件由用户的G套件平台所有)

  • 第一次尝试:
    功能。仅使用
    功能挖掘
    。支持驱动器

    我尝试的第一件事是在
    PickerBuilder
    上启用两个功能
    MINE\u ONLY
    SUPPORT\u DRIVES
    ,但是这会导致“shared DRIVES”视图为空,因为用户不是共享驱动器中文件的所有者(请参见上面的解释)

    第二次尝试:
    功能。支持\u-DRIVE
    +
    setOwnedByMe(true)

    我尝试的第二件事是只启用
    SUPPORT\u DRIVES
    功能,并在“文件夹”和“最近”视图上使用
    setOwnedByMe(true)
    方法

    它几乎可以按预期工作,但“文件夹”视图没有显示文件夹,因为
    setOwnedByMe
    函数不能与
    setIncludeFolders
    视图()一起调用

    以下是我第二次尝试的代码的简化版本(我故意没有输入身份验证代码):

    var googlePicker=new google.picker.PickerBuilder();
    //KO:不显示文件夹
    var folderView=new google.picker.DocsView()。
    //设置IncludeFolders(真)。//->不能与setOwnedByMe一起使用,否则会覆盖它
    setOwnedByMe(真)。
    setParent('root');
    //嗯
    var recentFilesView=new google.picker.DocsView(google.picker.ViewId.DOCS)。
    setOwnedByMe(真);
    //嗯
    var sharedDriveview=new google.picker.DocsView()。
    设置IncludeFolders(真)。
    setSelectFolderEnabled(错误)。
    SetEnableDrive(真);
    googlePicker.enablefeact(google.picker.Feature.SUPPORT_驱动器);//以前命名的支持团队驱动器
    //googlePicker.enableFeature(仅限google.picker.Feature.MINE_);//使用SetEnableDrive时工作不正常
    谷歌扒手。
    添加视图(folderView)。
    addView(recentFilesView)。
    addView(sharedDriveview);
    googlePicker.build().setVisible(true);
    
    回答: 不幸的是,这似乎是不可能做到的

    推理: 正如你在问题中指出的,这里的问题归结为三件事:

  • 要查看共享驱动器,
    DocsView.setEnableDrives()
    需要设置为
    true
    ,并且
    功能。需要启用“支持驱动器”
    。这可以单独与
    DocsView.setOwnedByMe()
    DocsView.setincludefolders()
    结合使用
  • 要查看当前用户拥有的文件,
    DocsView.setOwnedByMe()
    需要设置为
    true
    ,或
    功能。只需打开“我的”
    Docsview.setOwnedByMe()
    可与
    Docsview.setEnableDrive()
    一起使用,但不能与
    Docsview.setIncludeFolders()一起使用
  • 要在驱动器视图中查看文件夹,
    DriveView.setIncludeFolders()
    需要设置为
    true
    ,但不能与
    DriveView.setOwnedByMe()
    同时设置为
    DriveView.setIncludeFolders()
    的值。当设置
    DriveView.setIncludeFolders()
    时,将忽略setOwnedByMe()
  • 可能的解决办法: 由于拾取程序一次只能渲染一个视图,因此可以创建一种方法,在创建拾取程序之前,从用户获取是否访问共享驱动器或个人驱动器的信息,并设置自定义渲染的功能和包括。这可以通过多种方式(如按钮、HTML单选按钮或引导选项卡)来完成,从而更改页面上可振动的选择器

    功能要求: 我已经代表你在谷歌的问题跟踪系统上提交了一份功能请求。可以找到此功能请求,您可以给它一个星号(☆) 在左上角,让谷歌知道更多的人希望这个请求

    参考资料:

    感谢您的回答,在显示驱动器选择器之前检查用户是否有权访问共享驱动器也是我考虑的解决方案,因此我想我会同意。感谢您的FR!无需担心,很高兴能提供帮助!