python-3.x - 为 google sheet api(和/或 MS Excel)动态生成范围
问题描述
我正在寻找一种以 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”等。
解决方案
我不完全确定我理解你想要做什么。您的问题是否只需要遍历“July!C3:AF105”?如果是这样,您可以将范围设置为该范围(但那时您似乎不会问)。
我假设您的问题是您需要单独的 LOGIC 来处理每一列?如果是这种情况,您仍然可以索引列。
在称为设置或尺寸或属性的工作簿中创建新工作表
在 7 月添加引用您的标题的 counta 或 countifs!这将告诉您有多少列。
将列数映射到字母,例如在您的情况下,C 似乎是索引计数 = 1,因此如果列 = 2,则 1 映射到 C,2 映射到 D,依此类推。
如果您需要这些列的行数,您可以使用相同的 countifs 方法
在您的 python 代码中,首先获取设置表并获取尺寸。然后,您可以将这些维度转换为任何内容。
将有助于查看一些示例数据。或者了解您是否需要此逻辑开关 PER 列。