Перечисление папок диска через скрипты приложений не показывает разрешения - PullRequest
0 голосов
/ 06 декабря 2018

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

Я делаю это с помощью скриптов приложений с помощью расширенного диска.служба включена.

function listFolders() {
    var query = 'mimeType = "application/vnd.google-apps.folder" and trashed = false'
    var response = Drive.Files.list({corpora: 'domain', q : query});
    if (response.items && response.items.length > 0) {
        var foldersDetails = getFoldersDetails(response.items);
    }
    Logger.log(foldersDetails);
}

function getFoldersDetails(items) {
    var foldersArr = [];
    for (var i = 0; i < items.length; i++) {
        var folderDetails = getFolderDetails(items[i].id);
        foldersArr.push(folderDetails);
    }
    return foldersArr;
}

function getFolderDetails(fileId) {
    var file = Drive.Files.get(fileId);
    return {name: file.title,
            permissions: file.permissions}
}

Проблема в том, что я просто получаю пустые значения вместо объектов разрешений.

Документация по Drive API: https://developers.google.com/drive/api/v2/reference/files

Что яделать неправильно?

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Как предложил DaImTo, добавление field = '*' помогло мне в коде:

function getFolderDetails(fileId) {
    var file = Drive.Files.get(fileId, {fields:'*'});
    return {name: file.title,
            permissions: file.permissions}
}
0 голосов
/ 06 декабря 2018

Это связано с частичным ответом Однако.

Список файлов будет возвращать только идентификатор и имя. Я считаю, что документация устарела и недействительна, если я ее вспомню.С другой стороны, File.get вы можете добавить, добавить параметр fields и использовать *, после чего он вернет все параметры, которые вы сейчас видите, возвращенные как нулевые

Я не являюсь разработчиком сценариев JavaScript или приложений.Код должен быть примерно таким, работать только с файлом get.Я не могу найти пример для него только один для использования files.list, который не работает с V3.

function listFiles() {
  var files = Drive.Files.list({
    fields: 'nextPageToken, items(id, title)',
    maxResults: 10
  }).items;
  for (var i = 0; i < files.length; i++) {
    var file = files[i];
    Logger.log('%s (%s)', file.title, file.id);
  }
}

, если вы хотите увидеть все, используйте *

var files = Drive.Files.list({
    fields: '*',
    maxResults: 10
  }).items;

Ссылки на Как получить полный файл ответа

...