我一直在努力/寻找解决这个问题很长一段时间。 我已阅读gspread的文档,我无法找到有办法重命名工作表。 你们谁都知道如何?我会大量赞赏它! 确实有worksheet.title给出了工作表的名称,但我找不到重命名实际工作表的方法。如何使用Python中的API重命名Google表格电子表格中的(工作)工作表?
预先感谢您!
我一直在努力/寻找解决这个问题很长一段时间。 我已阅读gspread的文档,我无法找到有办法重命名工作表。 你们谁都知道如何?我会大量赞赏它! 确实有worksheet.title给出了工作表的名称,但我找不到重命名实际工作表的方法。如何使用Python中的API重命名Google表格电子表格中的(工作)工作表?
预先感谢您!
这是一个图书馆的提取其中我个人编码:
def _batch(self, requests):
body = {
'requests': requests
}
return self._service.spreadsheets().batchUpdate(spreadsheetId=self.spreadsheetId, body=body).execute()
def renameSheet(self, sheetId, newName):
return self._batch({
"updateSheetProperties": {
"properties": {
"sheetId": sheetId,
"title": newName,
},
"fields": "title",
}
})
我认为,随着一点点努力,你可以落实到你的代码,并获得你想要的东西。 为了使batchUpdate
电话,您将需要spreadsheetId以及通过在Python QUickstart - Google Sheet API
这个答案只是超级简化的“FieldMasks”。为什么地球上它必须是如此复杂但很好的答案。 – Antony
我同意你的看法,我能想到的唯一答案就是Google采用了这种方法,以便从任何类型的功能中抽象出来,并且用单一方法支持几乎任何类型的操作。 –
你的答案解释初始化service
可以解决从Python中的HTTP请求。
Link是here
您需要发送某种元数据对通过HTTP的工作表。
例如,获得使用Python工作表的ID,并发送以下信息:
<entry>
<id>
https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId
</id>
<updated>2007-07-30T18:51:30.666Z</updated>
<category scheme="http://schemas.google.com/spreadsheets/2006"
term="http://schemas.google.com/spreadsheets/2006#worksheet"/>
<title type="text">Income</title>
<content type="text">Expenses</content>
<link rel="http://schemas.google.com/spreadsheets/2006#listfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/list/key/worksheetId/private/full"/>
<link rel="http://schemas.google.com/spreadsheets/2006#cellsfeed"
type="application/atom+xml" href="https://spreadsheets.google.com/feeds/cells/key/worksheetId/private/full"/>
<link rel="self" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId"/>
<link rel="edit" type="application/atom+xml"
href="https://spreadsheets.google.com/feeds/worksheets/key/private/full/worksheetId/version"/>
<gs:rowCount>45</gs:rowCount>
<gs:colCount>15</gs:colCount>
</entry>
该网站有一个Java和.NET解决方案,以及。 (这是为旧版本3)
对于较新的版本,您也可以通过来自Python的POST http请求使用批量更新。
链路是here
该请求的数据是
{
"requests": [{
"updateSpreadsheetProperties": {
"properties": {"title": "My New Title"},
"fields": "title"
}
}]
}
通过POST发送到https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId:batchUpdate
在这两个请求,随着所述ID替换spreadsheetId在URL您正在编辑的Google表格。
请注意网址中从v3到v4的变化。
如果您使用的是第3版的应用程序,并希望迁移,链接是here
一个评注者指出的是,第二个请求不工作表的名称更改。我添加的链接显示了更改工作表复杂属性的方式,我将很快更新我的答案。
请注意,您发布的请求与更改** Spreadsheet **(因此您的请求会重命名整个Spreadsheet),但用户明确要求如何重命名** **工作表**。 –
啊,是的,我意识到第二个请求没有这样做,但是,我链接的页面显示了电子表格的更复杂的属性,也可以编辑。但是,由于OP可以从他们的代码中获得工作表的ID(他们提到他们可以获得标题,所以他们也可以使用ID),但已弃用(但仍然有效)的API请求应该也会更改工作表的名称。 – ytpillai
您可以使用api v4的gspread端口 - pygsheets(作者在这里)来实现。 使用pygsheets的相应代码将为,
import pygsheets
gc = pygsheets.authorize()
# Open spreadsheet and then workseet
sh = gc.open('my new ssheet')
wks = sh.sheet1
wks.title = "new title"
最佳答案。一个美妙的图书馆,更好,然后gspread。 –
您可以在Google Apps脚本的帮助下实现此目的。您可以使用rename(newName)重命名文档。 var ss = SpreadsheetApp.getActiveSpreadsheet(); ss.rename(“这是新的名字”); 如果要将当前活动工作表重命名为给定的新名称,可以调用renameActiveSheet(newName)。 //下面的代码将活动工作表重命名为“Hello world” SpreadsheetApp.getActiveSpreadsheet()。renameActiveSheet(“Hello world”);欲了解更多信息。检查此[文档](https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#renamenewname) – KENdi
@KENdi,但再次,如何可以在Python中做到这一点? –
它似乎与以下请求有关: “updateSheetProperties”:{object(UpdateSheetPropertiesRequest)},UpdateSheetPropertiesRequest被描述为:“使用指定的sheetId更新工作表的属性。” ...除了我找不到方法设置工作表https://developers.google.com/sheets/reference/rest/v4/spreadsheets/request#updatesheetpropertiesrequest – Christophe