Python 3.x写入谷歌表格:循环写入单元格范围避免数据覆盖
解决Google Sheet循环写入覆盖问题的方案
嘿,我来帮你搞定这个问题!你现在的代码每次都把数据写到第1行的A1和B1,所以才会一直覆盖之前的内容。咱们只需要加个行号计数器,让它跟着循环一步步往下走就可以了,非常容易理解和修改。
核心修改思路
- 初始化一个行号变量,从第1行开始(因为你要从A1/B1开始写)
- 每次循环写入数据时,用这个变量指定行号,而不是固定写1
- 每处理完一组数据,就让行号加1,这样下一次就自动写到下一行了
修改后的完整代码片段
def analytics_response(response): # 初始化行号,从第1行开始 row_num = 1 for report in response.get('reports', []): columnHeader = report.get('columnHeader', {}) dimensionHeaders = columnHeader.get('dimensions', []) metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) for row in report.get('data', {}).get('rows', []): dimensions = row.get('dimensions', "google/organic") dateRangeValues = row.get('metrics', []) for header, dimension in zip(dimensionHeaders, dimensions): for i, values in enumerate(dateRangeValues): for metricHeader, value in zip(metricHeaders, values.get('values')): # 用row_num代替固定的1,指定当前要写入的行 blank_worksheet.update_cell(row_num, 1, dimension) # A列放维度 blank_worksheet.update_cell(row_num, 2, value) # B列放数值 # 处理完当前行的所有数据后,行号加1,准备写下一行 row_num += 1
关键修改点说明
- 行号初始化:在最外层循环前定义
row_num = 1,确保从第一行开始写入 - 替换固定行号:把
update_cell(1,1,...)和update_cell(1,2,...)里的1换成row_num,这样每次循环都会用当前的行号 - 行号递增:在处理完每一组维度和数值后,执行
row_num += 1,让下一次循环自动指向下面一行
这样修改后,第一次循环会写入A1/B1,第二次写入A2/B2,以此类推,就不会再覆盖之前的内容啦!
内容的提问来源于stack exchange,提问作者Jack Bird
相关产品推荐
相关产品推荐

