Как правильно создать электронную таблицу Google с Sheet API4? - PullRequest
0 голосов
/ 02 февраля 2019

Я создал электронную таблицу с Sheet APIv4.Когда я перечисляю каталог с Drive APIv3, он показывает только [].Мои коды приходят с официальных (гугл) сайтов.Я использую Python3.6 и Google Colab Laboratory.

from google.colab import auth
auth.authenticate_user()
from googleapiclient.discovery import build
sheet_service = build('sheets', 'v4')
drive_service = build('drive', 'v3')

Создание:

spreadsheet_metadata = {'properties': {'title': 'Second spreadsheet2'},
                    'sheets': [
                    {
                        'properties': {
                            'title': 'First Sheet',
                            'gridProperties' : {
                                'columnCount': 6,
                                'rowCount': 11,
                                'frozenRowCount': 1
                            }
                        }
                    }, 
                    {
                       'properties': {
                           'title': 'Second Sheet',
                           'gridProperties': {
                               'columnCount': 4,
                               'rowCount': 8,
                               'frozenColumnCount': 2
                           }
                       }
                    }
                   ]
                   }
spreadsheet = sheet_service.spreadsheets().create(body=spreadsheet_metadata).execute()
spreadsheet_id = spreadsheet['spreadsheetId']
print('Created "%s"' % spreadsheet['properties']['title'])
print('Spreadsheet ID: {0}'.format(spreadsheet.get('spreadsheetId')))

В результате получается

Created "Second spreadsheet2"
Spreadsheet ID: 1fqreW1y3fcdaJmQWS1j25OMKaFjf90XfO38WB4ZIqIM

Листинг:

page_token = None
while True:
    response = drive_service.files().list(q="mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'",
                                          spaces='drive',
                                          fields='nextPageToken, files(id, name)',
                                          pageToken=page_token).execute()
    for file in response.get('files', []):
        # Process change
        print('Found file: %s (%s)' % (file.get('name'), file.get('id')))
    page_token = response.get('nextPageToken', None)
    if page_token is None:
        break

Это приводит к:

[]

Поскольку листинг работает хорошо (я проверял много раз), я думаю, что проблема не в правильном spreadsheet_metadata.Чего-то не хватает, но я понятия не имею, что.Я надеюсь, что у кого-то есть больше практики.Спасибо.

Обновление Благодаря комментарию @Tanaike я обнаружил свое недоразумение.Google строго различает файлы Excel xlsx и файлы Google "xlsx".Поэтому, если кто-то хочет обрабатывать их вместе, одним из решений будет использование

" mimeType='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' or  
 mimeType='application/vnd.google-apps.spreadsheet'" 

в запросе, но я не знаю, вызывает ли это позже другие проблемы.Поскольку у меня всего несколько файлов, возможно, я преобразую Excel xlsx в формат Google "xlsx", учитывая только один тип файлов, который проще (для меня).

...