gspread append_row执行后未向下运行 无print(3)输出问题排查
问题原因
print("3")始终无法执行,是因为print("2")之后的第一行代码就触发了异常,被外层无差别捕获所有异常的except块拦截后直接执行continue,跳过了当前循环后续所有逻辑,根本走不到打印3的步骤。
具体出错的就是这行:
time(1)
你导入的time是Python的标准模块,本身不能直接当函数调用,要实现1秒延迟的功能必须调用它的sleep方法,正确写法是time.sleep(1)。当前写法会直接抛出TypeError: 'module' object is not callable,因为异常被裸except接住后没有任何日志输出,直接进入下一轮循环,所以你只能看到循环打印1、2,永远看不到3。
额外需要注意的问题
- 不要用裸
except:静默吞掉所有异常,这种写法会把所有错误(包括代码写法错误、接口调用错误、权限错误)全部隐藏,出问题完全没法定位。至少要在except块里打印异常信息,再决定是否跳过当前循环。 - 你调用
gc.open()时传了两个参数,不符合gspread的方法定义:open()是按表格名称查找,仅接受表格标题一个参数;如果你第二个传的是Google Sheets的文件ID,应该用gc.open_by_key(文件ID)方法,这个问题会在你修好time的调用错误后立刻触发。 append_row的table_range参数不需要固定传A1,这个参数是用来指定查找表格末尾位置的起始范围,默认值就可以满足追加行的需求,传值错误反而可能导致写入位置不符合预期。
修正后的核心逻辑参考
import time itaworksheet = sh.worksheet("수정") itainfor = itaworksheet.get_all_records() for itainfo in itainfor: customer_Net_Contribution = itainfo['Net Contribution'] salesperson_fixed = itainfo['확정수익'] salesperson_expect = itainfo['예정수익'] salesperson_code = itainfo['영업인 코드'] salesperson_name = itainfo['영업인 이름'] person_salesperson_name = itainfo['영업인의 영업인 이름'] person_salesperson_code = itainfo['영업인의 영업인 코드'] try: # 如果是按表格名打开就用open,传ID就换成open_by_key salessh = gc.open_by_key('***********__************') saworksheet = salessh.worksheet("ITA") print("1") saworksheet.append_row( [customer_Net_Contribution,'',salesperson_fixed,salesperson_expect], value_input_option="USER_ENTERED" ) print("2") time.sleep(1) print("3") person_salessh = gc.open_by_key('***********__************') person_saworksheet = person_salessh.worksheet("수정") person_saworksheet.append_row( [customer_Net_Contribution,'',salesperson_fixed,salesperson_expect,'',salesperson_name], value_input_option="USER_ENTERED" ) time.sleep(1) except Exception as e: print(f"当前行处理失败,错误信息:{str(e)}") continue
内容的提问来源于stack exchange,提问作者doyeop
相关产品推荐
相关产品推荐

