如何在 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格式

如何使用 Google Sheets API python 将下拉列表添加到 google sheet

如何使用API编辑google sheet而不需要手动登录?