首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GSpread如何复制纸张

GSpread如何复制纸张
EN

Stack Overflow用户
提问于 2020-04-08 06:00:39
回答 1查看 4.7K关注 0票数 1

在搜索和搜索Stackoveflow之后,我想我找不到关于如何复制现有工作表(现有模板工作表)并将其保存到另一个工作表的指南。

根据文档,有板材,但我不能做一个工作的例子,谁能用它来指导我?

代码语言:javascript
复制
 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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 06:45:23

  • 您希望将源电子表格复制为新的电子表格。
  • 您希望使用python扩展来实现这一点。
  • 您已经能够使用Sheets获取和放置Google电子表格的值。

如果我的理解是正确的,那么这个答案呢?

问题和解决办法:

duplicate_sheet方法似乎用于将源电子表格中的工作表复制到同一个源电子表格中。参考为了将源电子表格复制为新的电子表格,请使用类客户端的copy()方法。

示例脚本:

请按以下方式修改您的脚本。

发自:

代码语言:javascript
复制
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')

至:

代码语言:javascript
复制
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')。请小心这个。

参考文献:

添加:

  • 您希望在Google电子表格中复制其中一个工作表。

我能像上面那样理解。为此,示例脚本如下所示。

示例脚本:

代码语言:javascript
复制
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))
  • 在本示例中,从复制的电子表格中删除"Sheet2“、"Sheet3”、"Sheet4“的工作表。

参考资料:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61094190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档