如何使用Sheet API4正确创建Google电子表格?

时间:2019-02-02 19:59:26

标签: python-3.x google-drive-api google-sheets-api google-colaboratory

我创建了表APIv4的电子表格。当我使用Drive APIv3列出目录时,它仅显示[]。我的代码来自官方(谷歌)的网站。我用Python3.6和谷歌Colaboratory。

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到谷歌“XLSX”格式只考虑一个类型的文件,这是简单的(对我来说)。

0 个答案:

没有答案