我正在尝试创建一个Google,它显示以下视图:
Feature.MINE_ONLY 第一次尝试:和 Feature.SUPPORT_DRIVES
我尝试的第一件事是启用MINE_ONLY和SUPPORT_DRIVES在PickerBuilder上的特性,但是它会导致“共享驱动器”视图为空,因为用户不是共享驱动器中文件的所有者(参见上面的解释)。
第二次尝试:Features.SUPPORT_DRIVE + setOwnedByMe(true)
我尝试的第二件事是只启用SUPPORT_DRIVES特性,并在“文件夹”和“最近”视图上使用setOwnedByMe(true)方法。
它几乎按照预期工作,但是“文件夹”视图没有显示文件夹,因为setOwnedByMe函数不能与setIncludeFolders视图(参考文献)一起调用。
下面是我第二次尝试的代码的简化版本(我故意没有放置身份验证代码):
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);发布于 2019-10-08 10:16:11
答案:
不幸的是,这似乎是不可能做到的。
推理:
正如你在问题中指出的,这里的问题归结为以下三点:
DocsView.setEnableDrives()设置为true,Feature.SUPPORT_DRIVES需要打开。这可以与DocsView.setOwnedByMe()和DocsView.setInculudeFolders()单独使用。DocsView.setOwnedByMe()设置为true,或者Feature.MINE_ONLY需要打开。Docsview.setOwnedByMe()可以与DocsView.setEnableDrives()一起使用,但不能与DocsView.setIncludeFolders()一起使用。DriveView.setIncludeFolders()设置为true,但不能同时设置DriveView.setOwnedByMe(),因为在设置DriveView.setIncludeFolders()时忽略DriveView.setOwnedByMe()的值。可能的解决办法:
由于Picker一次只能呈现一个视图,因此您可以创建一种方法,在创建Picker之前从用户那里获取是否访问共享驱动器或个人驱动器的信息,并设置自定义呈现的功能和包含。这可以通过多种方式(例如按钮、HTML单选按钮或引导选项卡)来完成,这些更改在页面上是可见的。
特征请求:
我已经提出了一个功能要求为您代表谷歌的问题跟踪器。这个功能请求可以找到这里,您可以在左上角给一个星星(☆),让谷歌知道更多的人希望这个请求。
参考文献:
https://stackoverflow.com/questions/58231453
复制相似问题