You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键修改点说明

  1. 行号初始化:在最外层循环前定义row_num = 1,确保从第一行开始写入
  2. 替换固定行号:把update_cell(1,1,...)和update_cell(1,2,...)里的1换成row_num,这样每次循环都会用当前的行号
  3. 行号递增:在处理完每一组维度和数值后,执行row_num += 1,让下一次循环自动指向下面一行

这样修改后,第一次循环会写入A1/B1,第二次写入A2/B2,以此类推,就不会再覆盖之前的内容啦!

内容的提问来源于stack exchange,提问作者Jack Bird

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:15:22