1

我正在创建一个应用程序,我需要在其中提供 Drive Picker 小部件,以便用户可以上传一些文件。现在我想限制用户,以便他们只能从他们的“团队驱动器”中选择文件,而不能从其他任何地方选择文件。

我试过在onPickerInit事件中添加方法。

这是我的函数,它在onPickerInit事件中被调用,

function fetchFolder(widget, pickerBuilder) {
  pickerBuilder.addView(new google.picker.DocsView()
                       .setParent('TeamDriveId')
                       .setIncludeFolders(true));
}

此方法限制用户只能从特定的团队云端硬盘中进行选择,但是我的问题是如何提供动态选项,以便用户可以从他们的任何团队云端硬盘中进行选择,而不仅限于一个团队云端硬盘。他们也不应该能够从自己的 Google Drives 中进行选择。

4

1 回答 1

4

似乎这种情况需要低级别的 Drive Picker 调整,所以让我们从删除 App Maker 开箱即用的所有设置开始:

  1. 删除所有功能
  2. 删除所有视图

驱动器选择器设置

  1. 然后将以下脚本添加到onPickerInit事件中
// Enable Team Drives
pickerBuilder.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES);

// Let users to select files from any Team Drive
var multiTeamDrive = new google.picker.DocsView();
multiTeamDrive.setIncludeFolders(true)
              .setEnableTeamDrives(true);
pickerBuilder.addView(multiTeamDrive);


// This feature need to be set to force `setParent` work.
// Seems to be Drive Picker's bug
pickerBuilder.enableFeature(google.picker.Feature.MULTISELECT_ENABLED);

// Force users to upload files to a specific Team Drive
var uploadView = new google.picker.DocsUploadView();
uploadView.setParent('Fancy KEY from Team Drive folder URL')
          .setLabel('Upload to Team Drive XXX');
pickerBuilder.addView(uploadView);

结果 多团队驱动器

笔记

  • 我没有找到隐藏个人驱动器上传选项卡的方法。奇怪的是App Maker默认添加它并且没有删除它的选项。
  • 我还建议为用户选择的文件添加服务器端验证,以确保它们来自 Team Drive。

类似/相关的答案:https ://stackoverflow.com/a/49677679/454137

于 2018-05-23T18:13:55.883 回答