在搜索和搜索Stackoveflow之后,我想我找不到关于如何复制现有工作表(现有模板工作表)并将其保存到另一个工作表的指南。
根据文档,有板材,但我不能做一个工作的例子,谁能用它来指导我?
import gspread
from gspread.models import Cell, Spreadsheet
scope = [
"https://www.googleapis.com/auth/spreadsheets.readonly",
"https://www.googleapis.com/auth/spreadsheets",
"https://www.googleapis.com/auth/drive.readonly",
"https://www.googleapis.com/auth/drive.file",
"https://www.googleapis.com/auth/drive",
]
json_key_absolute_path = "key.json"
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_key_absolute_path, scope)
client = gspread.authorize(credentials)
spreadsheet_client = Spreadsheet(client)
spreadsheet_client.duplicate_sheet("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", new_sheet_name="timcard2")
worksheet = client.open("timcard2")
worksheet.share("my_email@google.com", perm_type='user', role='writer')发布于 2020-04-08 06:45:23
如果我的理解是正确的,那么这个答案呢?
问题和解决办法:
duplicate_sheet方法似乎用于将源电子表格中的工作表复制到同一个源电子表格中。参考为了将源电子表格复制为新的电子表格,请使用类客户端的copy()方法。
示例脚本:
请按以下方式修改您的脚本。
发自:
client = gspread.authorize(credentials)
spreadsheet_client = Spreadsheet(client)
spreadsheet_client.duplicate_sheet("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", new_sheet_name="timcard2")
worksheet = client.open("timcard2")
worksheet.share("my_email@google.com", perm_type='user', role='writer')至:
client = gspread.authorize(credentials)
client.copy("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", title="timcard2", copy_permissions=True)
worksheet = client.open("timcard2")
worksheet.share("my_email@google.com", perm_type='user', role='writer')18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo电子表格ID的电子表格复制为timcard2的电子表格名称。此外,还复制源电子表格的权限信息。注意:
copy_permissions=True时,权限信息也会被复制。因此,虽然我不确定您的实际情况,但可能不需要使用worksheet.share("my_email@google.com", perm_type='user', role='writer')。请小心这个。参考文献:
添加:
我能像上面那样理解。为此,示例脚本如下所示。
示例脚本:
client = gspread.authorize(credentials)
client.copy("18Qk5bzuA7JOBD8CTgwvKYRiMl_35it5AwcFG2Bi5npo", title="timcard2", copy_permissions=True)
ss = client.open("timcard2")
ss.share("my_email@google.com", 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))参考资料:
https://stackoverflow.com/questions/61094190
复制相似问题