如何在 google sheet api 中获取列标题及其名称的映射?
Posted
技术标签:
【中文标题】如何在 google sheet api 中获取列标题及其名称的映射?【英文标题】:How to get a mapping of column headers and their names in google sheets api? 【发布时间】:2021-07-03 05:24:01 【问题描述】:我的谷歌表格中有几列。列数随时间变化(将来可能会添加新列)。如果我的床单看起来像这样,我想得到一张地图或类似的东西:
View of my sheet
API 调用的响应:
"timestamp" : "A",
"Col1" : "B",
"Col2" : "C",
"Col3" : "D"
换句话说,我想在 api 响应的工作表中获取列名及其标签。或者,任何类似的东西也可以。我不知道要进行什么 API 调用。我知道工作表的.get
调用,但我不知道如何获取此列的标签。我只能获取特定范围内的数据。我不知道如何获取列的标签。
【问题讨论】:
标题似乎是第 1 行的值。按顺序获取该行的值对您的用例来说就足够了吗?如果不是,你能解释一下你的用例是什么吗? 我有一个脚本,在那个脚本中我使用查询语言来查询我的工作表。我在工作表上执行select A, B, C
之类的查询。但是,A、B、C 看起来不像任何有意义的名称。我想按标题查询工作表。要按标题查询,我需要保留这种映射,以便可以将我的查询转换为select Row_num
以选择 A
【参考方案1】:
您可以简单地使用 API 获取值,然后映射,然后生成列的字母:
def main():
# Build the service (see python quickstart)
# [...]
# Get the values on row 1
result = service.spreadsheets().values().get(spreadsheetId=SPREADSHEET_ID, range='1:1').execute()
values = result.get('values', [[]])[0]
# Generate the headers mapping
headers =
for i, value in enumerate(values, start=1):
if value is not None and value != '':
headers[value] = col_to_letter(i)
print(headers)
def col_to_letter(col):
'''Gets the letter of a column number'''
r = ''
while col > 0:
v = (col - 1) % 26
r = chr(v + 65) + r
col = (col - v - 1) // 26
return r
col_to_letter
改编自 this javascript answer。
参考
Python Quickstart (Google Sheets API v4 guide) spreadsheets.values.get (Google Sheets API v4 reference)【讨论】:
这不适用于超过 26 列的工作表... @FidelI.Schaposnik 忘记了一个斜线...哎呀,修复了。以上是关于如何在 google sheet api 中获取列标题及其名称的映射?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Sheets API v4 (Java) 获取 Google 表格上次编辑日期
使用Sheets API v4获取与Google帐户关联的所有电子表格列表
Google Sheets Column函数使用当前行获取右侧范围内所有列的平均值
如何将Google Visualization API的日期列转换为JSON格式