我创建了表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”格式只考虑一个类型的文件,这是简单的(对我来说)。