【问题标题】:Dynamically generate ranges for google sheet api (and/or MS Excel)为 google sheet api(和/或 MS Excel)动态生成范围
【发布时间】:2020-06-04 09:11:57
【问题描述】:

我正在寻找一种以 A1 表示法动态生成单元格范围的方法。

长话短说,我有一个 python 代码,用于从 Google Sheet API 获取值和单元格颜色。

ranges = ["July!C3:C105"]

def get_hours(ranges):
    service = discovery.build('sheets', 'v4', credentials=creds)
    # The ranges to retrieve from the spreadsheet.
    include_grid_data = True
    request = service.spreadsheets().get(spreadsheetId=SPREADSHEET_ID, 
                                         ranges=ranges, 
                                         includeGridData=include_grid_data)
    response = request.execute()
    hours = []
    for item in response['sheets'][0]['data'][0]['rowData']:
        h = {}
        if 'userEnteredValue' not in item['values'][0]:
            h['amount'] = None
            h['color'] = None
        else:
            h['amount'] = item['values'][0]['userEnteredValue']['numberValue']
            h['color'] = item['values'][0]['userEnteredFormat']['backgroundColor']
            hours.append(h)

    return hours

但我需要循环执行以获取从“C”列等到“AF”的所有内容。

所以我需要以某种方式添加范围。

“for”循环也可能是一种方法。但是我不确定如何添加“AB,AC,AD”等。

【问题讨论】:

  • 您是否有关于如何使用工作表 API 创建标准电子表格中不存在的新列(从 AA 到 AD)的问题?如果不是,请说明?

标签: python-3.x excel for-loop google-sheets


【解决方案1】:

我不完全确定我理解你想要做什么。您的问题是否只需要遍历“July!C3:AF105”?如果是这样,您可以将范围设置为该范围(但这似乎您不会问)。

我假设您的问题是您需要单独的 LOGIC 来处理每一列?如果是这种情况,您仍然可以索引列。

  1. 在名为设置或尺寸或属性的工作簿中创建新工作表

  2. 在 7 月添加引用您的标题的 counta 或 countifs!这会告诉你有多少列。

  3. 将列数映射到字母,例如在您的情况下,C 似乎是索引计数 = 1,因此如果列 = 2,则 1 映射到 C,2 映射到 D,依此类推。

  4. 如果您需要这些列的行数,您可以使用相同的计数方法

  5. 在您的 python 代码中,首先获取设置表并获取尺寸。然后你可以将这些维度转换成任何东西。

    有助于查看一些示例数据。或者了解您是否需要此逻辑开关 PER 列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    相关资源
    最近更新 更多