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

优化PageSpeed Insights脚本:实现每10个URL批量导出至Google Sheets

批量导出PageSpeed数据到Google Sheets的优化方案

核心逻辑修正

  • 用列表缓存处理好的性能数据,每攒够10条就一次性写入Sheets
  • 所有URL处理完毕后,把缓存中剩余的不足10条数据也写入,避免遗漏

修正后的代码示例

先初始化缓存和批量阈值:

# 初始化批量缓存,存储待写入的数据行
batch_data = []
# 自定义批量大小,这里设为10
BATCH_SIZE = 10

然后是URL循环处理的核心部分:

# 假设url_list是你的4000+URL列表
for url in url_list:
    # 调用PageSpeed API获取数据(替换成你实际的API调用代码)
    ps_result = fetch_pagespeed_metrics(url)
    
    # 把数据整理成Sheets需要的行格式(根据你的字段调整)
    row = [
        url,
        ps_result.get('largest_contentful_paint'),
        ps_result.get('first_input_delay'),
        ps_result.get('cumulative_layout_shift')
    ]
    
    # 加入批量缓存
    batch_data.append(row)
    
    # 达到批量阈值时执行写入
    if len(batch_data) >= BATCH_SIZE:
        # 批量写入Sheets
        batch_write_to_sheets(batch_data)
        # 清空缓存,准备下一批
        batch_data = []

# 处理最后一批不足10条的数据
if batch_data:
    batch_write_to_sheets(batch_data)

接着是批量写入Sheets的函数,要用上批量接口而非单条追加:

def batch_write_to_sheets(data_rows):
    # 这里假设你已经完成了Google Sheets的认证,拿到了sheet对象
    # 比如用gspread库的话:
    sheet = your_authorized_client.open("性能报告").worksheet("数据页")
    
    # 获取当前表格的最后一行,避免覆盖已有数据
    last_row = len(sheet.get_all_values()) + 1
    # 计算写入的单元格范围
    write_range = f"A{last_row}:D{last_row + len(data_rows) - 1}"
    
    # 执行批量更新,这比单条append快得多
    sheet.update(write_range, data_rows, value_input_option='USER_ENTERED')

额外提速建议

  • 给API调用加重试:用tenacity库做自动重试,避免网络波动导致的失败中断
  • 并行处理URL:用concurrent.futures开多线程同时请求API(注意Google API的配额限制,别超过每秒请求数)
  • 记录处理进度:每写完一批就打印日志,比如“已完成XX条数据写入”,就算脚本崩溃也能从断点继续

内容的提问来源于stack exchange,提问作者Laura Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:30:42