- 您想要将源电子表格复制为新电子表格。
- 您希望使用 gspread 和 python 来实现此目的。
- 您已经能够使用 Sheets API 获取和输入 Google 电子表格的值。
如果我的理解是正确的,这个答案怎么样?
问题及解决方案:
看起来duplicate_sheet
gspread 方法用于将源电子表格中的工作表复制到同一源电子表格中。Ref https://github.com/burnash/gspread/blob/a52db7006f7906eca42fff058deb254526c4cb08/gspread/models.py#L364为了将源电子表格复制为新电子表格,请使用以下方法copy() https://gspread.readthedocs.io/en/latest/api.html#gspread.Client.copy类客户。
示例脚本:
请按如下方式修改您的脚本。
From:
client = gspread.authorize(credentials)
spreadsheet_client = Spreadsheet(client)
spreadsheet_client.duplicate_sheet("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", new_sheet_name="timcard2")
worksheet = client.open("timcard2")
worksheet.share("[email protected] /cdn-cgi/l/email-protection", perm_type='user', role='writer')
To:
client = gspread.authorize(credentials)
client.copy("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", title="timcard2", copy_permissions=True)
worksheet = client.open("timcard2")
worksheet.share("[email protected] /cdn-cgi/l/email-protection", perm_type='user', role='writer')
- 当您运行脚本时,电子表格 ID 为
18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo
被复制为电子表格名称timcard2
。并且,源电子表格的权限信息也被复制。
Note:
- 在这种情况下,当
copy_permissions=True
使用时,权限信息也会被复制。所以虽然我不确定你的实际情况,但可能不需要使用worksheet.share("[email protected] /cdn-cgi/l/email-protection", perm_type='user', role='writer')
。请小心这一点。
参考:
- 重复表 https://gspread.readthedocs.io/en/latest/api.html#gspread.models.Spreadsheet.duplicate_sheet
- 复制(file_id,标题=无,copy_permissions=False) https://gspread.readthedocs.io/en/latest/api.html#gspread.Client.copy
Added:
- 您想要复制 Google 电子表格中的一张工作表。
我可以像上面那样理解。为此,示例脚本如下。
示例脚本:
client = gspread.authorize(credentials)
client.copy("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", title="timcard2", copy_permissions=True)
ss = client.open("timcard2")
ss.share("[email protected] /cdn-cgi/l/email-protection", perm_type='user', role='writer')
delete_sheets = ["Sheet2", "Sheet3", "Sheet4"] # Please set the sheet names you want to delete.
for s in delete_sheets:
ss.del_worksheet(ss.worksheet(s))
- 在此示例中,从复制的电子表格中删除“Sheet2”、“Sheet3”、“Sheet4”工作表。
参考:
- del_worksheet(工作表) https://gspread.readthedocs.io/en/latest/api.html#gspread.models.Spreadsheet.del_worksheet