Python Google电子表格API排序无效
我使用google示例(为了测试的目的,只需切换第3行和第4行)用Python v3.7.8测试google Spreadshhet API v4:Python Google电子表格API排序无效,python,api,sorting,google-sheets,google-sheets-api,Python,Api,Sorting,Google Sheets,Google Sheets Api,我使用google示例(为了测试的目的,只需切换第3行和第4行)用Python v3.7.8测试google Spreadshhet API v4: 创建柱状图 对列“A”进行排序 数据存储在谷歌硬盘的电子表格中,我在那里创建了柱状图 创建了柱状图,但未对列“A”进行排序(升序)。以下代码: from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow f
- 创建柱状图
- 对列“A”进行排序
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
...
body = {'requests': [
{'addChart':
{'chart':
{'spec':
{'title': 'Model Q1 Sales',
'titleTextPosition': {'horizontalAlignment': 'CENTER'},
'basicChart':
{'domains': [
{'domain':
{'sourceRange':
{'sources': [
{'sheetId': 909072886,
'startRowIndex': 0,
'endRowIndex': 7,
'startColumnIndex': 0,
'endColumnIndex': 1}]}}}],
'series': [
{'series':
{'sourceRange':
{'sources': [
{'sheetId': 909072886,
'startRowIndex': 0,
'endRowIndex': 7,
'startColumnIndex': 1,
'endColumnIndex': 2}]}},
'targetAxis': 'LEFT_AXIS'},
{'series':
{'sourceRange':
{'sources': [
{'sheetId': 909072886,
'startRowIndex': 0,
'endRowIndex': 7,
'startColumnIndex': 2,
'endColumnIndex': 3}]}},
'targetAxis': 'LEFT_AXIS'},
{'series':
{'sourceRange':
{'sources': [
{'sheetId': 909072886,
'startRowIndex': 0,
'endRowIndex': 7,
'startColumnIndex': 3,
'endColumnIndex': 4}]}},
'targetAxis': 'LEFT_AXIS'}],
'legendPosition': 'BOTTOM_LEGEND',
'axis': [
{'position': 'BOTTOM_AXIS',
'title': 'Model Numbers',
'titleTextPosition': {'horizontalAlignment': 'CENTER'}},
{'position': 'LEFT_AXIS',
'title': 'Sales',
'titleTextPosition': {'horizontalAlignment': 'CENTER'}}],
'headerCount': 1,
'chartType': 'COLUMN',
'stackedType': 'STACKED'},
'sortSpecs': [
{'dimensionIndex': 0,
'sortOrder': 'ASCENDING'}]},
'position':
{'overlayPosition':
{'anchorCell':
{'sheetId': 909072886,
'rowIndex': 7,
'columnIndex': 6}
}
}
}
}
}
]
}
response = service.spreadsheets().batchUpdate(spreadsheetId=file_id, body=body).execute()
我应该得到以下信息:
但我明白了:排序部分没有效果。
备注:我也尝试过SortSpec,但没有成功
'dataSourceColumnReference': {'name': 'A'}
代替
'dimensionIndex': 0
别犹豫,支持我!提前感谢。问题:
添加图表时,sortSpecs
仅支持来自外部数据源的数据。从:
sortSpecs[]对图表数据进行排序的顺序。仅支持单个排序规范仅支持数据源图表
解决方案:
您应该对数据本身进行排序。通过将请求添加到批处理更新中,您可以通过编程方式完成此操作:
body = {
'requests': [
{
'sortRange': {
'range': {
'sheetId': 909072886,
'startRowIndex': 1,
'endRowIndex': 7,
'startColumnIndex': 0,
'endColumnIndex': 5
},
'sortSpecs': [
{
'sortOrder': 'ASCENDING',
'dimensionIndex': 0
}
]
}
},
{
'addChart': {
# Add chart request body
}
}
]
}
参考:
sortSpecs
仅用于外部数据源,如我提供的参考中所述。@lamblichus。我已经测试过了,但是service.spreadsheets().batchUpdate(spreadsheetId=file_id,body=body)。execute()在请求时创建了一个错误:HttpError 400********************************************:batchUpdate?alt=json返回了“requests[0]处的无效值”(其中一个),其中一个字段“kind”已经设置。无法设置“addChart”。详细信息:“[{@type':'type.googleapis.com/google.rpc.BadRequest”,“fieldViolations':[{'field':'requests[0]”,“description':“requests[0]”处的值无效(其中一个),已设置字段'kind'中的一个。无法设置'addChart'}]>@hganger我无法复制此信息。使用此命令时,我没有收到任何错误,请求正在成功运行。您需要添加与addChart
请求对应的代码(您共享的代码,但不需要sortSpecs
部分)。你那样做了吗?@hganger很抱歉,我在将代码复制到答案时,把开头/结尾的{}
搞糟了。我想我现在已经修好了,让我知道它是否有效。