如何在Python中无需硬编码范围动态读取Google Sheets数据?
解决方案
要实现从A14开始读取到首个空单元格为止的动态数据,你可以改用get_values获取整列数据后过滤,而非固定范围的range调用。以下是修改后的完整代码:
async def players_d1(ctx): try: sheet_index = 0 # first sheet sheet = workbook.get_worksheet(sheet_index) # 从A14开始获取整列的所有值 column_data = sheet.get_values('A14:A') player_list = [] # 遍历数据,直到遇到第一个空单元格(去除首尾空格后判断) for row in column_data: cell_value = row[0].strip() if not cell_value: break player_list.append(cell_value) # 创建Embed embed = discord.Embed(title="Players in DIVISION I", color=discord.Color.red()) # 如果有玩家数据,添加字段;否则提示无数据 if player_list: for i, player in enumerate(player_list, start=1): embed.add_field(name=f"Player {i}", value=player, inline=False) else: embed.add_field(name="提示", value="当前DIVISION I暂无玩家数据", inline=False) await ctx.send(embed=embed) except Exception as e: print(f"Error: {e}") await ctx.send("An error occurred while fetching data from the worksheet.")
关键改动说明:
- 用
sheet.get_values('A14:A')替代固定范围调用,获取A14及以下整列的所有数据 - 遍历数据时通过
strip()去除单元格内容的首尾空格,避免因空格导致误判为空 - 遇到第一个空单元格时立即停止遍历,减少不必要的处理
- 增加空数据判断逻辑,避免Embed出现无效空字段
内容的提问来源于stack exchange,提问作者am10
相关产品推荐
相关产品推荐

