Отображать только общие диски в виджете выбора дисков

Я создаю приложение, в котором мне нужно предоставить виджет Drive Picker, чтобы пользователи могли загружать некоторые файлы. Теперь я хочу ограничить пользователей, чтобы они могли выбирать файлы только со своих «общих дисков», а не откуда-либо еще.

Я пробовал добавить метод в событие onPickerInit.

Вот моя функция, которая вызывается в onPickerInit событии,

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

Этот метод ограничивает пользователей возможностью выбирать только из определенного общего диска, однако мой вопрос: как я могу предоставить динамическую опцию, чтобы пользователи могли выбирать из любого из своих общих дисков, а не ограничиваться одним общим диском. Кроме того, они не должны иметь возможность выбирать из своих дисков Google.


person Darpan Sanghavi    schedule 23.05.2018    source источник


Ответы (1)


Кажется, что в этом случае требуется настройка 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);

Результат  Multi Team Drive

Примечания

  • Я не нашел способа скрыть вкладку для загрузки личного диска. Странно, что Конструктор приложений добавляет его по умолчанию и нет возможности его удалить.
  • Я также рекомендую добавить проверку на стороне сервера для файлов, выбранных пользователями, чтобы убедиться, что они происходят с общего диска.

Аналогичный / связанный ответ: https://stackoverflow.com/a/49677679/454137

person Pavel Shkleinik    schedule 23.05.2018
comment
Спасибо за подробный ответ, но, как вы правильно заметили, Appmaker по умолчанию добавляет Person's My Drive, что создает для меня проблему. Я смог добиться этого, не удаляя и эти функции. Просто укажите SUPPORT_TEAM_DRIVES в разделе «Функции» и удалите все из представлений, и вуаля, я могу увидеть «Мой диск» и все общие диски. Но я хочу удалить свой диск, так как я не могу проводить проверки на стороне сервера, мои требования несколько иные. - person Darpan Sanghavi; 24.05.2018
comment
FWIW, похоже, сейчас это вариант. - person xd1936; 28.09.2018