如何在Google Colab中用gspread将工作表复制到已有表格?
解决Google Colab中用gspread复制工作表到另一个表格的问题
问题原因
你遇到的AttributeError是因为当前使用的gspread版本过旧,Worksheet对象尚未添加copy_to方法。
解决方案一:升级gspread到最新版本
- 在Colab中执行以下命令升级gspread:
!pip install --upgrade gspread
- 重新运行代码,确保授权和工作表对象获取正确:
from google.colab import auth auth.authenticate_user() import gspread from google.auth import default creds, _ = default() gc = gspread.authorize(creds) # 获取源表格及目标工作表 sh_1 = gc.open('spreadsheet_1') ws = sh_1.worksheet('ws_1') # 获取目标表格 sh_2 = gc.open('spreadsheet_2') # 将工作表复制到目标表格 ws.copy_to(sh_2.id)
若需要自定义复制后的工作表名称,可添加title参数:
ws.copy_to(sh_2.id, title="复制后的ws_1")
解决方案二:直接调用Google Sheets API(兼容旧版gspread)
如果升级gspread后仍存在问题,可直接通过gspread的客户端调用底层Google Sheets API完成复制:
from google.colab import auth auth.authenticate_user() import gspread from google.auth import default creds, _ = default() gc = gspread.authorize(creds) # 获取源表格及目标工作表 sh_1 = gc.open('spreadsheet_1') ws = sh_1.worksheet('ws_1') # 获取目标表格 sh_2 = gc.open('spreadsheet_2') # 调用API执行复制操作 gc.request( "POST", f"https://sheets.googleapis.com/v4/spreadsheets/{sh_1.id}/sheets/{ws.id}:copyTo", json={"destinationSpreadsheetId": sh_2.id} )
内容的提问来源于stack exchange,提问作者übermensch
相关产品推荐
相关产品推荐

