gpt4 book ai didi

google-drive-api - Google Drive Picker : Use Feature. MINE_ONLY 以及 Feature.SUPPORT_DRIVES

转载 作者:行者123 更新时间:2023-12-01 15:14:48 24 4
gpt4 key购买 nike

我正在尝试创建一个显示以下 View 的 Google Drive Picker:

  1. “文件夹” View ,显示当前用户的文件夹树,允许他只选择当前用户拥有的文件

  2. “最近” View ,显示当前用户拥有的最近打开的文件

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

第一次尝试:Feature.MINE_ONLYFeature.SUPPORT_DRIVES

我尝试的第一件事是在 PickerBuilder 上启用 MINE_ONLYSUPPORT_DRIVES 这两个功能,但是它会导致“共享驱动器” View 为空,因为用户不是共享驱动器中文件的所有者(参见上面的解释)。

第二次尝试:Features.SUPPORT_DRIVE + setOwnedByMe(true)

我尝试的第二件事是仅启用 SUPPORT_DRIVES 功能,并对“文件夹”和“最近” View 使用 setOwnedByMe(true) 方法。

它几乎按预期工作,但“文件夹” View 不显示文件夹,因为 setOwnedByMe 函数无法与 setIncludeFolders View 一起调用(reference ).

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

var googlePicker = new google.picker.PickerBuilder();

// KO: DOES NOT DISPLAY THE FOLDERS
var folderView = new google.picker.DocsView().
//setIncludeFolders(true). // -> cannot be used with setOwnedByMe, else it overrides it
setOwnedByMe(true).
setParent('root');

// OK
var recentFilesView = new google.picker.DocsView(google.picker.ViewId.DOCS).
setOwnedByMe(true);

// OK
var sharedDriveview = new google.picker.DocsView().
setIncludeFolders(true).
setSelectFolderEnabled(false).
setEnableDrives(true);

googlePicker.enableFeature(google.picker.Feature.SUPPORT_DRIVES); // previously named SUPPORT_TEAM_DRIVES
//googlePicker.enableFeature(google.picker.Feature.MINE_ONLY); // NOT working properly with setEnableDrives

googlePicker.
addView(folderView).
addView(recentFilesView).
addView(sharedDriveview);

googlePicker.build().setVisible(true);

最佳答案

回答:

不幸的是,这似乎是不可能的。

推理:

正如您在问题中指出的,这里的问题归结为以下三点:

  1. 要查看共享驱动器,需要将 DocsView.setEnableDrives() 设置为 true,并且需要打开 Feature.SUPPORT_DRIVES。这可以与 DocsView.setOwnedByMe()DocsView.setInculudeFolders() 结合使用。
  2. 要查看当前用户拥有的文件,需要将 DocsView.setOwnedByMe() 设置为 true,或 Feature.MINE_ONLY 需要打开。 Docsview.setOwnedByMe() 可以与 DocsView.setEnableDrives() 一起使用,但不能DocsView.setIncludeFolders() 一起使用>.
  3. 要在 Drive View 中查看文件夹,需要将 DriveView.setIncludeFolders() 设置为 true,但不能与 同时设置DriveView.setOwnedByMe() 作为 DriveView.setOwnedByMe() 的值在设置 DriveView.setIncludeFolders() 时被忽略。

可能的解决方法:

由于 Picker 一次只能呈现一个 View ,因此您可以创建一种方法,在创建 Picker 之前从用户那里获取有关是访问共享驱动器还是个人驱动器的信息,并设置功能和包括用于自定义渲染。这可以通过多种方式(例如按钮、HTML 单选按钮或 Bootstrap 选项卡)来完成,这会更改页面上可见的选择器。

功能请求:

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

引用资料:

关于google-drive-api - Google Drive Picker : Use Feature. MINE_ONLY 以及 Feature.SUPPORT_DRIVES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58231453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com