Как получить список всех файлов в каталоге с Google Drive API (v3) - PullRequest
0 голосов
/ 12 февраля 2020

Я застрял с функцией, которая должна возвращать мне список всех файлов из каталога (в этом случае каталог "root"). Когда я вызываю эту функцию, она возвращает мне файлы, которые были добавлены только моей программой (эта программа также может загружать файлы на Google Диск), а не все файлы. И это также показывает мне файлы, которые я удалил: /. Что я делаю не так? Эта функция была скопирована с Google Drive API Quickstart

service, err := getService()
    if err != nil {
        log.Fatalf("Unable to retrieve Drive client: %v", err)
    }

    r, err := service.Files.List().Q("'root' in parents").Do()
    if err != nil {
        log.Fatalf("Unable to retrieve files: %v", err)
    }
    fmt.Println("Files:")
    if len(r.Files) == 0 {
        fmt.Println("No files found.")
    } else {
        for _, i := range r.Files {
            fmt.Printf("%v (%vs )\n", i.Name, i.Id)
        }
    }

1 Ответ

2 голосов
/ 13 февраля 2020
  • Вы хотите получить все файлы прямо из папки root.
  • Вы хотите добиться этого с помощью google-api- go -клиента с golang.
  • Вы уже получили и поместили значения для Google Drive с помощью Drive API.

Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходной путь:

Из ситуации When I call this function, it return me files that only I added with my program (this program also can upload files to Google Drive), not all files. я подумал, что ваши области действия могут включать https://www.googleapis.com/auth/drive.file. Когда в качестве области действия используется https://www.googleapis.com/auth/drive.file, извлекаются только файлы, созданные приложением.

Чтобы получить все файлы только в папке root, используйте следующие области действия.

Если вы хотите получить можно использовать только список файлов, области действия .readonly.

Модифицированный скрипт:

Из вашего вопроса я могу заметить, что вы используете google-api- go -client с golang и Go Quickstart. В этом случае, как насчет следующей модификации?

Если в области включена drive.DriveFileScope, измените ее следующим образом.

С:
config, err := google.ConfigFromJSON(b, drive.DriveFileScope)
Кому:
config, err := google.ConfigFromJSON(b, drive.DriveMetadataScope)

или

config, err := google.ConfigFromJSON(b, drive.DriveReadonlyScope)
  • Если вы также хотите загрузить файл, пожалуйста, используйте drive.DriveScope.

Примечание:

  • При изменении областей Пожалуйста, удалите файл token.json из tokFile := "token.json". И, пожалуйста, запустите скрипт и авторизуйтесь снова. Таким образом, измененные области отражаются в токене доступа и обновляются sh токеном. Пожалуйста, будьте осторожны.

Ссылки:

Если я неправильно понял ваш вопрос и это не то направление, которое вам нужно, я приношу свои извинения.

...