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

使用pygsheets从Google Sheets列随机取值仅返回首字符的问题求助

问题解决:pygsheets get_col返回首字符而非完整字符串

问题原因

get_col方法默认参数returnas='matrix',返回的是二维列表(每个单元格值被包裹在子列表中),示例结构如下:

[['BLLR48IQR9'], ['CLL45G3WMP'], ['WLL31HGJ64'], ...]

当执行random.choice(values)时,得到的是['BLLR48IQR9']这类子列表,若后续将其当作字符串处理(或因函数返回类型标注错误导致隐式转换),就会只取到首字符。

修复方案

方案1:修改get_col的returnas参数

调用get_col时指定returnas='list',直接获取一维字符串列表:

def search_promo_name2(
    self,
    data: List[List[Union[str, bool]]],
    search_col: int = 1,
    promo_col: int = 2
) -> str:  # 修正返回类型为字符串
    googlesheet_client: pygsheets.client.Client = self._get_googlesheet_client()
    wks: pygsheets.Spreadsheet = self._get_googlesheet2_by_url(googlesheet_client)
    # 指定returnas='list'获取一维列表
    values = wks.get_col(promo_col, include_empty=False, returnas='list')
    if not values:
        return ""  # 替代原返回-1的逻辑,符合字符串返回类型
    promo = random.choice(values)
    return promo

方案2:从二维列表中提取子列表元素

若保持默认returnas='matrix',需从选中的子列表中取出第一个元素:

def search_promo_name2(
    self,
    data: List[List[Union[str, bool]]],
    search_col: int = 1,
    promo_col: int = 2
) -> str:  # 修正返回类型为字符串
    googlesheet_client: pygsheets.client.Client = self._get_googlesheet_client()
    wks: pygsheets.Spreadsheet = self._get_googlesheet2_by_url(googlesheet_client)
    values = wks.get_col(promo_col, include_empty=False)
    if not values:
        return ""
    # 从子列表中提取目标字符串
    promo = random.choice(values)[0]
    return promo

额外注意点

原函数返回类型标注-> int错误,需改为-> str匹配实际返回值类型;同时原return -1的逻辑不符合字符串返回要求,建议改为返回空字符串或None,根据业务需求调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:10:13