Google API Explorer for Spreadsheet returns 属性 - 如何在 Python 快速入门中获取属性(文件名)?
Google API Explorer for Spreadsheet returns properties - How do I get properties (filename) in Python Quickstart?
当我使用 Google API Explorer for SpreadSheet 到 Try this API
并填写电子表格 ID 时,它 returns 的信息包含一个 properties
键,其中包含电子表格名称:
{
"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
"properties": {
"title": "Example Spreadsheet",
"locale": "en_US",
}
}
如何使用 Python 获取此信息?
我想从以下位置获取文件名:result['properties']['title']
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
RANGE_NAME = 'Class Data!A2:E'
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID,
range=RANGE_NAME).execute()
此处的 result
是请求的 RANGE_NAME 中数据的散列:
{
u'range': u "'Class Data'!A2:E101",
u'values': [
[u 'Alexandra', u 'Female', u '4. Senior', u 'CA', u 'English'],
[u 'Andrew', u 'Male', u '1. Freshman', u 'SD', u 'Math'],
[u 'Anna', u 'Female', u '1. Freshman', u 'NC', u 'English'],
[u 'Becky', u 'Female', u '2. Sophomore', u 'SD', u 'Art'],
[u 'Benjamin', u 'Male', u '4. Senior', u 'WI', u 'English'],
[u 'Carl', u 'Male', u '3. Junior', u 'MD', u 'Art'],
[u 'Carrie', u 'Female', u '3. Junior', u 'NE', u 'English'],
[u 'Dorothy', u 'Female', u '4. Senior', u 'MD', u 'Math'],
[u 'Dylan', u 'Male', u '1. Freshman', u 'MA', u 'Math'],
[u 'Edward', u 'Male', u '3. Junior', u 'FL', u 'English'],
[u 'Ellen', u 'Female', u '1. Freshman', u 'WI', u 'Physics'],
[u 'Fiona', u 'Female', u '1. Freshman', u 'MA', u 'Art'],
[u 'John', u 'Male', u '3. Junior', u 'CA', u 'Physics'],
[u 'Jonathan', u 'Male', u '2. Sophomore', u 'SC', u 'Math'],
[u 'Joseph', u 'Male', u '1. Freshman', u 'AK', u 'English'],
[u 'Josephine', u 'Female', u '1. Freshman', u 'NY', u 'Math'],
[u 'Karen', u 'Female', u '2. Sophomore', u 'NH', u 'English'],
[u 'Kevin', u 'Male', u '2. Sophomore', u 'NE', u 'Physics'],
[u 'Lisa', u 'Female', u '3. Junior', u 'SC', u 'Art'],
[u 'Mary', u 'Female', u '2. Sophomore', u 'AK', u 'Physics'],
[u 'Maureen', u 'Female', u '1. Freshman', u 'CA', u 'Physics'],
[u 'Nick', u 'Male', u '4. Senior', u 'NY', u 'Art'],
[u 'Olivia', u 'Female', u '4. Senior', u 'NC', u 'Physics'],
[u 'Pamela', u 'Female', u '3. Junior', u 'RI', u 'Math'],
[u 'Patrick', u 'Male', u '1. Freshman', u 'NY', u 'Art'],
[u 'Robert', u 'Male', u '1. Freshman', u 'CA', u 'English'],
[u 'Sean', u 'Male', u '1. Freshman', u 'NH', u 'Physics'],
[u 'Stacy', u 'Female', u '1. Freshman', u 'NY', u 'Math'],
[u 'Thomas', u 'Male', u '2. Sophomore', u 'RI', u 'Art'],
[u 'Will', u 'Male', u '4. Senior', u 'FL', u 'Math']
],
u 'majorDimension': u 'ROWS'
}
它不包含我想要的 properties
词典!我打开了 Google 工作表 API 并请求了以下范围,它也不包含 properties
信息:
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/drive.readonly',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheets',
]
您想从电子表格 ID 中检索文件名。如果我的理解是正确的,那么这个答案呢?我认为有两种模式可以实现你想做的事情。这些是使用 Sheets API 和 Drive API.
1。使用表格 API
- 请将
spreadsheets().values().get()
修改为spreadsheets().get()
。
- 在您的情况下,
fields="properties/title"
可用于检索标题(文件名)。
修改脚本:
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
result = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID,
fields="properties/title").execute()
print(result)
结果:
{'properties': {'title': '### filename ###'}}
2。使用驱动器 API
- 作为另一种方法,您可以使用驱动器 API 从文件 ID 中检索文件名。
脚本:
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/drive.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('drive', 'v3', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
result = service.files().get(fileId=SPREADSHEET_ID,
fields="name").execute()
print(result)
结果:
{'name': '### filename ###'}
注:
- 当您使用上述脚本时,请再次确认是否在 API 控制台启用了 Sheets API 和 Drive API。
- 如果出现与范围相关的错误,请删除
credentials.json
一次并重新授权重新创建文件。然后 运行 脚本。
参考资料:
如果我误解了你的问题,我很抱歉。
当我使用 Google API Explorer for SpreadSheet 到 Try this API
并填写电子表格 ID 时,它 returns 的信息包含一个 properties
键,其中包含电子表格名称:
{
"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms",
"properties": {
"title": "Example Spreadsheet",
"locale": "en_US",
}
}
如何使用 Python 获取此信息?
我想从以下位置获取文件名:result['properties']['title']
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
RANGE_NAME = 'Class Data!A2:E'
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID,
range=RANGE_NAME).execute()
此处的 result
是请求的 RANGE_NAME 中数据的散列:
{
u'range': u "'Class Data'!A2:E101",
u'values': [
[u 'Alexandra', u 'Female', u '4. Senior', u 'CA', u 'English'],
[u 'Andrew', u 'Male', u '1. Freshman', u 'SD', u 'Math'],
[u 'Anna', u 'Female', u '1. Freshman', u 'NC', u 'English'],
[u 'Becky', u 'Female', u '2. Sophomore', u 'SD', u 'Art'],
[u 'Benjamin', u 'Male', u '4. Senior', u 'WI', u 'English'],
[u 'Carl', u 'Male', u '3. Junior', u 'MD', u 'Art'],
[u 'Carrie', u 'Female', u '3. Junior', u 'NE', u 'English'],
[u 'Dorothy', u 'Female', u '4. Senior', u 'MD', u 'Math'],
[u 'Dylan', u 'Male', u '1. Freshman', u 'MA', u 'Math'],
[u 'Edward', u 'Male', u '3. Junior', u 'FL', u 'English'],
[u 'Ellen', u 'Female', u '1. Freshman', u 'WI', u 'Physics'],
[u 'Fiona', u 'Female', u '1. Freshman', u 'MA', u 'Art'],
[u 'John', u 'Male', u '3. Junior', u 'CA', u 'Physics'],
[u 'Jonathan', u 'Male', u '2. Sophomore', u 'SC', u 'Math'],
[u 'Joseph', u 'Male', u '1. Freshman', u 'AK', u 'English'],
[u 'Josephine', u 'Female', u '1. Freshman', u 'NY', u 'Math'],
[u 'Karen', u 'Female', u '2. Sophomore', u 'NH', u 'English'],
[u 'Kevin', u 'Male', u '2. Sophomore', u 'NE', u 'Physics'],
[u 'Lisa', u 'Female', u '3. Junior', u 'SC', u 'Art'],
[u 'Mary', u 'Female', u '2. Sophomore', u 'AK', u 'Physics'],
[u 'Maureen', u 'Female', u '1. Freshman', u 'CA', u 'Physics'],
[u 'Nick', u 'Male', u '4. Senior', u 'NY', u 'Art'],
[u 'Olivia', u 'Female', u '4. Senior', u 'NC', u 'Physics'],
[u 'Pamela', u 'Female', u '3. Junior', u 'RI', u 'Math'],
[u 'Patrick', u 'Male', u '1. Freshman', u 'NY', u 'Art'],
[u 'Robert', u 'Male', u '1. Freshman', u 'CA', u 'English'],
[u 'Sean', u 'Male', u '1. Freshman', u 'NH', u 'Physics'],
[u 'Stacy', u 'Female', u '1. Freshman', u 'NY', u 'Math'],
[u 'Thomas', u 'Male', u '2. Sophomore', u 'RI', u 'Art'],
[u 'Will', u 'Male', u '4. Senior', u 'FL', u 'Math']
],
u 'majorDimension': u 'ROWS'
}
它不包含我想要的 properties
词典!我打开了 Google 工作表 API 并请求了以下范围,它也不包含 properties
信息:
SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly',
'https://www.googleapis.com/auth/drive.readonly',
'https://www.googleapis.com/auth/drive',
'https://www.googleapis.com/auth/drive.file',
'https://www.googleapis.com/auth/spreadsheets',
]
您想从电子表格 ID 中检索文件名。如果我的理解是正确的,那么这个答案呢?我认为有两种模式可以实现你想做的事情。这些是使用 Sheets API 和 Drive API.
1。使用表格 API
- 请将
spreadsheets().values().get()
修改为spreadsheets().get()
。 - 在您的情况下,
fields="properties/title"
可用于检索标题(文件名)。
修改脚本:
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('sheets', 'v4', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
result = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID,
fields="properties/title").execute()
print(result)
结果:
{'properties': {'title': '### filename ###'}}
2。使用驱动器 API
- 作为另一种方法,您可以使用驱动器 API 从文件 ID 中检索文件名。
脚本:
"""
Shows basic usage of the Sheets API. Prints values from a Google Spreadsheet.
"""
from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Sheets API
SCOPES = 'https://www.googleapis.com/auth/drive.readonly'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('drive', 'v3', http=creds.authorize(Http()))
# Call the Sheets API
SPREADSHEET_ID = '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms'
result = service.files().get(fileId=SPREADSHEET_ID,
fields="name").execute()
print(result)
结果:
{'name': '### filename ###'}
注:
- 当您使用上述脚本时,请再次确认是否在 API 控制台启用了 Sheets API 和 Drive API。
- 如果出现与范围相关的错误,请删除
credentials.json
一次并重新授权重新创建文件。然后 运行 脚本。
参考资料:
如果我误解了你的问题,我很抱歉。