GSpread 如何复制 sheet
GSpread how to duplicate sheet
在 Stackoveflow 上进行谷歌搜索和搜索后,我想我找不到有关如何复制现有 sheet(现有模板 sheet)并将其保存到另一个 sheet 的指南.
根据文档,有 duplicate_sheet 但我无法做一个工作示例,有人可以指导我吗?
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')
- 您想将源 Spreadsheet 复制为新的 Spreadsheet。
- 您想通过 python.
使用 gspread 来实现此目的
- 您已经能够使用 Sheets API.
获取和放置 Google Spreadsheet 的值
如果我的理解是正确的,这个答案怎么样?
问题与解决方案:
似乎gspread的duplicate_sheet
方法用于将源Spreadsheet中的sheet复制到相同的源Spreadsheet。 Class 个客户端的 Ref In order to copy the source Spreadsheet as new Spreadsheet, pleas use the method of 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
的spreadsheet ID的Spreadsheet被复制为spreadsheet的名称timcard2
。并且,源Spreadsheet的权限信息也被复制了。
注:
- 在这种情况下,当使用
copy_permissions=True
时,权限信息也会被复制。所以虽然我不确定你的实际情况,但可能不需要使用worksheet.share("my_email@google.com", perm_type='user', role='writer')
。请注意这一点。
参考文献:
已添加:
- 您想在 Google Spreadsheet.
中复制 sheet 之一
我可以像上面那样理解。为此,示例脚本如下。
示例脚本:
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”的 sheet 已从复制的 Spreadsheet 中删除。
参考:
在 Stackoveflow 上进行谷歌搜索和搜索后,我想我找不到有关如何复制现有 sheet(现有模板 sheet)并将其保存到另一个 sheet 的指南.
根据文档,有 duplicate_sheet 但我无法做一个工作示例,有人可以指导我吗?
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')
- 您想将源 Spreadsheet 复制为新的 Spreadsheet。
- 您想通过 python. 使用 gspread 来实现此目的
- 您已经能够使用 Sheets API. 获取和放置 Google Spreadsheet 的值
如果我的理解是正确的,这个答案怎么样?
问题与解决方案:
似乎gspread的duplicate_sheet
方法用于将源Spreadsheet中的sheet复制到相同的源Spreadsheet。 Class 个客户端的 Ref In order to copy the source Spreadsheet as new Spreadsheet, pleas use the method of 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
的spreadsheet ID的Spreadsheet被复制为spreadsheet的名称timcard2
。并且,源Spreadsheet的权限信息也被复制了。
注:
- 在这种情况下,当使用
copy_permissions=True
时,权限信息也会被复制。所以虽然我不确定你的实际情况,但可能不需要使用worksheet.share("my_email@google.com", perm_type='user', role='writer')
。请注意这一点。
参考文献:
已添加:
- 您想在 Google Spreadsheet. 中复制 sheet 之一
我可以像上面那样理解。为此,示例脚本如下。
示例脚本:
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”的 sheet 已从复制的 Spreadsheet 中删除。