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

Telegram Bot二次提交数据至Google Sheets触发400错误排查

错误原因分析

错误提示Requested writing within range [DadosTelegram!A5:D5], but tried writing to column [E]的核心原因是:同一用户再次提交数据时,旧的用户数据未被清空,新数据追加到旧数据列表后,导致要写入的元素数量超过了指定的4列(A-D)范围。

具体代码逻辑问题:

  • 用户首次提交后,user_data[chat.id]中保留了[姓名, 邮箱, 电话]的旧数据
  • 当用户再次选择"Quero que a Consiste entre em contato comigo"选项时,没有重置该用户的user_data列表
  • 新输入的姓名、邮箱、电话会被追加到旧列表后面,最终user_data[chat.id]会变成[旧姓名, 旧邮箱, 旧电话, 新姓名, 新邮箱, 新电话]
  • 调用save_to_google_sheets时,又追加了日期,总元素数达到7个,远超指定的4列范围,触发Google Sheets的范围校验错误
解决方法

方法1:重置用户数据列表(核心修复)

在用户选择提交数据的选项(opcao3)时,强制清空该用户对应的user_data列表,确保每次提交都是全新的数据集:

修改callback_inline函数中的opcao3分支:

elif call.data == "opcao3":
    user_data[call.message.chat.id] = []  # 新增:清空该用户的旧数据
    bot.send_message(call.message.chat.id, "Você Escolheu: Quero que a Consiste entre em contato comigo")
    bot.send_message(call.message.chat.id, "Por favor, digite seu Nome:")
    bot.register_next_step_handler(call.message, partial(get_email, user_id=call.message.chat.id))

方法2:添加数据长度校验(可选,增强鲁棒性)

在save_to_google_sheets函数中添加数据长度校验,提前拦截异常数据,避免请求到Google Sheets报错:

def save_to_google_sheets(user_data):
    creds = None

    # ... 省略原有认证代码 ...

    try:
        service = build('sheets', 'v4', credentials=creds)

        # ... 省略获取下一行的代码 ...

        user_data_values = user_data + [datetime.date.today().strftime('%d/%m/%Y')]
        # 新增:校验数据长度是否符合预期(4个元素:姓名、邮箱、电话、日期)
        if len(user_data_values) != 4:
            print(f"数据格式错误:期望4个元素,实际获取到{len(user_data_values)}个")
            return
        
        values_update = [user_data_values]
        range_name = f"DadosTelegram!A{next_empty_row}:D{next_empty_row}"

        result = service.spreadsheets().values().update(
            spreadsheetId=SAMPLE_SPREADSHEET_ID,
            range=range_name,
            valueInputOption="USER_ENTERED",
            body={'values': values_update}
        ).execute()

    except HttpError as err:
        print(err)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:24:56