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

如何快速获取Google Sheets某一列中每个单元格的颜色?

优化Pygsheets获取指定列单元格颜色的方案

一、关于get_all_values()仅获取单列数据的方法

完全可以通过指定range参数实现,直接传入目标列的范围即可,示例代码:

# 获取A列的所有值(不含末尾空单元格)
column_values = cyber_worksheet.get_all_values(
    range='A:A',
    include_tailing_empty=False
)

也可以用列索引转换后指定范围(比如第2列对应B列):

import pygsheets

# 把列索引转为列地址,再构造范围
col_addr = pygsheets.utils.col_idx_to_addr(2)
column_values = cyber_worksheet.get_all_values(
    range=f'{col_addr}:{col_addr}',
    include_tailing_empty=False
)

二、高效获取指定列单元格颜色的优化方案

原代码耗时高的核心原因是获取了整个工作表的所有单元格对象,网络请求数据量和本地遍历成本都极大。只需针对目标列单独请求单元格,就能大幅提升速度:

方法1:使用get_col()直接获取目标列的单元格对象

get_col()可以直接指定列索引,返回该列的单元格列表,避免多余请求:

import pygsheets

# 获取第1列(A列)的单元格对象,不含末尾空单元格
target_column_cells = cyber_worksheet.get_col(
    col=1,
    returnas='cell',
    include_tailing_empty=False
)
# 提取所有单元格颜色到列表
color_code = [cell.color for cell in target_column_cells]
return color_code

方法2:使用get_range()指定精确范围(已知行数量时)

如果明确知道目标列的行范围(比如1到1200行),可以直接指定精确范围进一步减少请求量:

# 获取A1到A1200的单元格对象
target_range = cyber_worksheet.get_range(
    'A1:A1200',
    returnas='cell'
)
# 提取颜色
color_code = [cell.color for cell in target_range]
return color_code

优化效果说明

这两种方法都只请求目标列的单元格数据,网络传输的数据量仅为原方案的1/N(N为工作表列数),同时本地无需遍历所有行列,处理速度会有数量级的提升,1200行的场景应该能把耗时压缩到几秒内。

内容的提问来源于stack exchange,提问作者Ran Hirschorn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:05:34