Как создать новый лист в определенной папке / каталоге, используя PyGSheets v2? - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу использовать PyGSheets для создания электронной таблицы в моей папке на Google Диске. Я также хочу иметь возможность установить каталог / папку, где лист создается с помощью кода. В частности, я хотел бы напечатать строку, похожую на URL или даже просто имя папки.
Я уже посмотрел документацию PyGSheets и модель «Электронная таблица». Я не нашел никаких классов, которые принимают имя папки или адрес каталога. Также нет класса, используемого для перемещения листа из одной папки в другую. Возможна ли любая операция с использованием PyGSheets?


По состоянию на 5 мая я использовал обходной путь для этой проблемы. Чтобы получить идентификатор папки на моем диске, я щелкаю правой кнопкой мыши по целевой папке и выбираю «Получить общую ссылку» в появившемся меню. Я копирую ссылку и вставляю ее в любой текстовый редактор. Ссылка выглядит так: https://drive.google.com/open?id=9JHS74hgls049J50. Я копирую произвольную строку символов после ключевых слов "id =". Вот что я указываю в качестве значения при создании папки с использованием PyGSheets:
shtTargetedCreate = con.create("Test Folder",folder="1GwA4W8iv-26BvG48nKnEigYqDL8SpUGK")

Есть ли более эффективный способ сделать это?

1 Ответ

1 голос
/ 10 июня 2019

Похоже, вы выяснили, как создать новую электронную таблицу в папке с помощью идентификатора файла, но не нашли, как получить имена / идентификаторы папок из таблиц или как перемещать листы.(Вы сказали, что создали «папку с помощью PyGSheets, но она просто создает электронную таблицу, верно?)

Это можно сделать с помощью функций DriveAPIWrapper - https://pygsheets.readthedocs.io/en/stable/drive_api.html

Имена / идентификаторы папок:

pygsheets.drive.list(), в вашем случае con.drive.list(), предоставит список словарей метаданных для всех файлов и папок на диске. Я сделал простую функцию для извлеченияпросто имена папок (ключи) и идентификаторы (значения) в словаре для упрощения поиска и использования с методом create:

def folder_id_dict(client):
    folders = {}
    meta_list = client.drive.list()
    for file_meta in meta_list:
        if file_meta['mimeType'] == 'application/vnd.google-apps.folder':
            folders[file_meta['name']] = file_meta['id']
    return folders

#your use:
names = folder_id_dict(con)

Перемещение файлов между папками:

https://pygsheets.readthedocs.io/en/stable/drive_api.html#pygsheets.drive.DriveAPIWrapper.move_file

con.drive.move_file(file_id, old_folder, new_folder, **kwargs)
...