【问题标题】:How to show a list of "shared with me" files in Google Picker如何在 Google Picker 中显示“与我共享”文件列表
【发布时间】:2023-01-31 05:26:20
【问题描述】:
Google Picker 适用于用户自己的云端硬盘,但我想添加选项以查看与用户共享的文件,根据 drive.google.com,您同时拥有我的云端硬盘和与我共享的文件:
这是最接近的代码:
const sharedDocsView = new window.google.picker.DocsView();
sharedDocsView.setEnableDrives(true); // adds Shared Drives
sharedDocsView.setOwnedByMe(false);
sharedDocsView.setMode(window.google.picker.DocsViewMode.LIST);
pickerBuilder.addView(sharedDocsView);
这得到一个共享驱动器选项卡,但它开始时是空的:
但是,如果您开始在搜索字段中键入内容,它会显示所有匹配的文件:
已经尝试过 API,但还没有找到任何组合可以让用户浏览他们的与我分享文件。
【问题讨论】:
标签:
google-api
google-picker
【解决方案1】:
长话短说:删除.setEnableDrives(true),你只需要setOwnedByMe(false)。
解释:从您的屏幕截图来看,您似乎没有任何Shared Drives。这些与共享文件不同,它们有一个different structure:
共享云端硬盘遵循与“我的云端硬盘”不同的组织、共享和所有权模型。
共享云端硬盘在您的云端硬盘中看起来像这样:
当您设置方法 .setEnableDrives(true) 时,您是在告诉 Picker 包含共享驱动器。这使得它优先考虑这些驱动器的视图,并且“与我共享”文件仅作为可搜索项目包含在“背景”中,因为它们具有彼此不兼容的非常不同的视图。例如,这就是您对我的看法:
上面的视图显示了共享驱动器结构,但您仍然可以搜索“与我共享”文件。您会注意到还有一个“与我共享”选项卡。此视图不包括共享驱动器,但它只显示您想要的共享文件:
创建这些视图的示例代码是这样的:
const shareddrivesview = new google.picker.DocsView(google.picker.ViewId.DOCS)
.setEnableDrives(true)
.setIncludeFolders(true); // creates just the shared drives view
const sharedwithmeview = new google.picker.DocsView(google.picker.ViewId.DOCS)
.setOwnedByMe(false); // creates just the shared with me view
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.MULTISELECT_ENABLED)
.setDeveloperKey(API_KEY)
.setAppId(APP_ID)
.setOAuthToken(accessToken)
.addView(shareddrivesview)
.addView(sharedwithmeview)
.setCallback(pickerCallback)
.build()
picker.setVisible(true);
本质上,您不希望在同一视图中将 setEnableDrives(true) 与 setOwnedByMe(false) 组合在一起,除非您希望用户必须手动搜索他们的共享文件。如果您不打算使用共享驱动器支持,则最好为它们中的每一个创建单独的视图或删除它。
资料来源: