已命名的范围和受保护的范围
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
借助 Google Sheets API,您可以创建、修改和删除已命名范围或受保护范围。本页面的示例展示了如何使用 Sheets API 实现一些常见的 Google 表格操作。
这些示例以 HTTP 请求的形式呈现,不涉及具体语言。如需了解如何使用 Google API 客户端库以不同语言实现批量更新,请参阅更新电子表格。
在这些示例中,占位符 SPREADSHEET_ID
和 SHEET_ID
表示您应在何处提供这些 ID。您可以在电子表格网址中找到电子表格 ID。您可以使用 spreadsheets.get
方法获取工作表 ID。范围使用 A1 表示法指定。范围示例:Sheet1!A1:D5。
此外,占位符 NAMED_RANGE_ID
和 PROTECTED_RANGE_ID
还提供了已命名范围和受保护范围的 ID。在发出更新或删除关联范围的请求时,会使用 namedRangeId
和 protectedRangeId
。该 ID 会在创建命名范围或受保护范围的 Sheets API 请求的响应中返回。您可以使用 spreadsheets.get
方法在 Spreadsheet
响应正文中获取现有范围的 ID。
添加已命名的范围或受保护的范围
以下 spreadsheets.batchUpdate
代码示例展示了如何使用 2 个请求对象。第一个示例使用 AddNamedRangeRequest
将范围 A1:E3 命名为“Counts”。第二个示例使用 AddProtectedRangeRequest
将警告级保护附加到 A4:E4 范围。此级别的保护仍允许修改范围内的单元格,但在进行更改之前会提示警告。
这些请求会返回一个 AddNamedRangeResponse
和一个 AddProtectedRangeResponse
,其中包含范围 ID 和属性。
请求协议如下所示。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
:batchUpdate
{
"requests": [
{
"addNamedRange": {
"namedRange": {
"name": "Counts",
"range": {
"sheetId": SHEET_ID
,
"startRowIndex": 0,
"endRowIndex": 3,
"startColumnIndex": 0,
"endColumnIndex": 5,
},
}
}
},
{
"addProtectedRange": {
"protectedRange": {
"range": {
"sheetId": SHEET_ID
,
"startRowIndex": 3,
"endRowIndex": 4,
"startColumnIndex": 0,
"endColumnIndex": 5,
},
"description": "Protecting total row",
"warningOnly": true
}
}
}
]
}
删除已命名的范围或受保护的范围
以下 spreadsheets.batchUpdate
代码示例展示了如何使用 2 个请求对象。第一个示例使用 DeleteNamedRangeRequest
删除现有已命名范围,并使用之前 API 调用中的 NAMED_RANGE_ID
。第二个示例使用 DeleteProtectedRangeRequest
删除现有范围保护,使用来自之前 API 调用的 PROTECTED_RANGE_ID
。
请求协议如下所示。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
:batchUpdate
{
"requests": [
{
"deleteNamedRange": {
"namedRangeId": "NAMED_RANGE_ID
",
}
},
{
"deleteProtectedRange": {
"protectedRangeId": PROTECTED_RANGE_ID
,
}
}
]
}
更新命名范围或受保护的范围
以下 spreadsheets.batchUpdate
代码示例展示了如何使用 2 个请求对象。第一个示例使用 UpdateNamedRangeRequest
将现有已命名范围的名称更新为“InitialCounts”,并使用之前 API 调用中的 NAMED_RANGE_ID
。第二个示例使用 UpdateProtectedRangeRequest
更新现有受保护的范围,使其现在保护同名范围。Editors
方法仅允许列出的用户修改这些单元格。此请求使用之前 API 调用中的 NAMED_RANGE_ID
和 PROTECTED_RANGE_ID
。
请求协议如下所示。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
:batchUpdate
{
"requests": [
{
"updateNamedRange": {
"namedRange": {
"namedRangeId": NAMED_RANGE_ID
,
"name": "InitialCounts",
},
"fields": "name",
}
},
{
"updateProtectedRange": {
"protectedRange": {
"protectedRangeId": PROTECTED_RANGE_ID
,
"namedRangeId": NAMED_RANGE_ID
,
"warningOnly": false,
"editors": {
"users": [
"charlie@example.com",
"sasha@example.com"
]
}
},
"fields": "namedRangeId,warningOnly,editors"
}
}
]
}
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-29。
[null,null,["最后更新时间 (UTC):2025-08-29。"],[],[],null,["# Named & protected ranges\n\nThe Google Sheets API lets you create, modify, and delete named or protected\nranges. The examples on this page illustrate how you can achieve some common\nSheets operations with the Sheets API.\n\nThese examples are presented in the form of HTTP requests to be language\nneutral. To learn how to implement a batch update in different languages using\nthe Google API client libraries, see [Update\nspreadsheets](/workspace/sheets/api/guides/batchupdate#example).\n\nIn these examples, the placeholders \u003cvar translate=\"no\"\u003eSPREADSHEET_ID\u003c/var\u003e and \u003cvar translate=\"no\"\u003eSHEET_ID\u003c/var\u003e\nindicates where you would provide those IDs. You can find the [spreadsheet\nID](/workspace/sheets/api/guides/concepts#spreadsheet) in the spreadsheet URL. You can get\nthe [sheet ID](/workspace/sheets/api/guides/concepts#sheet) by using the\n[`spreadsheets.get`](/workspace/sheets/api/reference/rest/v4/spreadsheets/get) method. The\nranges are specified using [A1 notation](/workspace/sheets/api/guides/concepts#cell). An\nexample range is Sheet1!A1:D5.\n\nAdditionally, the placeholders \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e and \u003cvar translate=\"no\"\u003ePROTECTED_RANGE_ID\u003c/var\u003e\nprovide the IDs for the named and protected ranges. The `namedRangeId` and\n`protectedRangeId` are used when making requests to update or delete the\nassociated ranges. The ID is returned in the response to a Sheets API\nrequest that creates a named or protected range. You can get the IDs of existing\nranges with the\n[`spreadsheets.get`](/workspace/sheets/api/reference/rest/v4/spreadsheets/get) method, in\nthe\n[`Spreadsheet`](/workspace/sheets/api/reference/rest/v4/spreadsheets#resource-spreadsheet)\nresponse body.\n\nAdd named or protected ranges\n-----------------------------\n\nThe following\n[`spreadsheets.batchUpdate`](/workspace/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)\ncode sample shows how to use 2 request objects. The first uses the\n[`AddNamedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#addnamedrangerequest)\nto assign the range A1:E3 the name \"Counts\". The second uses the\n[`AddProtectedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#addprotectedrangerequest)\nto attach a warning-level protection to the range A4:E4. This level protection\nstill allows cells within the range to be edited, but prompts a warning before\nmaking the change.\n\nThese requests return an\n[`AddNamedRangeResponse`](/workspace/sheets/api/reference/rest/v4/spreadsheets/response#addnamedrangeresponse)\nand an\n[`AddProtectedRangeResponse`](/workspace/sheets/api/reference/rest/v4/spreadsheets/response#addprotectedrangeresponse),\ncontaining the range IDs and properties.\n\nThe request protocol is shown below. \n\n POST https://sheets.googleapis.com/v4/spreadsheets/\u003cvar translate=\"no\"\u003eSPREADSHEET_ID\u003c/var\u003e:batchUpdate\n\n {\n \"requests\": [\n {\n \"addNamedRange\": {\n \"namedRange\": {\n \"name\": \"Counts\",\n \"range\": {\n \"sheetId\": \u003cvar translate=\"no\"\u003eSHEET_ID\u003c/var\u003e,\n \"startRowIndex\": 0,\n \"endRowIndex\": 3,\n \"startColumnIndex\": 0,\n \"endColumnIndex\": 5,\n },\n }\n }\n },\n {\n \"addProtectedRange\": {\n \"protectedRange\": {\n \"range\": {\n \"sheetId\": \u003cvar translate=\"no\"\u003eSHEET_ID\u003c/var\u003e,\n \"startRowIndex\": 3,\n \"endRowIndex\": 4,\n \"startColumnIndex\": 0,\n \"endColumnIndex\": 5,\n },\n \"description\": \"Protecting total row\",\n \"warningOnly\": true\n }\n }\n }\n ]\n }\n\nDelete named or protected ranges\n--------------------------------\n\nThe following\n[`spreadsheets.batchUpdate`](/workspace/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)\ncode sample shows how to use 2 request objects. The first uses the\n[`DeleteNamedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#deletenamedrangerequest)\nto delete an existing named range, using the \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e from a\nprevious API call. The second uses the\n[`DeleteProtectedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#deleteprotectedrangerequest)\nto delete an existing range protection, using the \u003cvar translate=\"no\"\u003ePROTECTED_RANGE_ID\u003c/var\u003e\nfrom a previous API call.\n\nThe request protocol is shown below. \n\n POST https://sheets.googleapis.com/v4/spreadsheets/\u003cvar translate=\"no\"\u003eSPREADSHEET_ID\u003c/var\u003e:batchUpdate\n\n {\n \"requests\": [\n {\n \"deleteNamedRange\": {\n \"namedRangeId\": \"\u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e\",\n }\n },\n {\n \"deleteProtectedRange\": {\n \"protectedRangeId\": \u003cvar translate=\"no\"\u003ePROTECTED_RANGE_ID\u003c/var\u003e,\n }\n }\n ]\n }\n\nUpdate named or protected ranges\n--------------------------------\n\nThe following\n[`spreadsheets.batchUpdate`](/workspace/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)\ncode sample shows how to use 2 request objects. The first uses the\n[`UpdateNamedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#updatenamedrangerequest)\nto update the name of an existing named range to \"InitialCounts\", using the \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e\nfrom a previous API call. The second uses the\n[`UpdateProtectedRangeRequest`](/workspace/sheets/api/reference/rest/v4/spreadsheets/request#updateprotectedrangerequest)\nto update an existing protected range so that it now protects the same named\nrange. The\n[`Editors`](/workspace/sheets/api/reference/rest/v4/spreadsheets/sheets#Editors) method\nallows only the listed users to edit those cells. This request uses the \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e\nand \u003cvar translate=\"no\"\u003ePROTECTED_RANGE_ID\u003c/var\u003e from previous API calls.\n\nThe request protocol is shown below. \n\n POST https://sheets.googleapis.com/v4/spreadsheets/\u003cvar translate=\"no\"\u003eSPREADSHEET_ID\u003c/var\u003e:batchUpdate\n\n```transact-sql\n{\n \"requests\": [\n {\n \"/workspace/sheets/api/reference/rest/v4/spreadsheets/request#updatenamedrangerequest\": {\n \"/workspace/sheets/api/reference/rest/v4/spreadsheets#namedrange\": {\n \"namedRangeId\": \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e,\n \"name\": \"InitialCounts\",\n },\n \"fields\": \"name\",\n }\n },\n {\n \"/workspace/sheets/api/reference/rest/v4/spreadsheets/request#updateprotectedrangerequest\": {\n \"/workspace/sheets/api/reference/rest/v4/spreadsheets#protectedrange\": {\n \"protectedRangeId\": \u003cvar translate=\"no\"\u003ePROTECTED_RANGE_ID\u003c/var\u003e,\n \"namedRangeId\": \u003cvar translate=\"no\"\u003eNAMED_RANGE_ID\u003c/var\u003e,\n \"warningOnly\": false,\n \"/workspace/sheets/api/reference/rest/v4/spreadsheets#editors\": {\n \"users\": [\n \"charlie@example.com\",\n \"sasha@example.com\"\n ]\n }\n },\n \"fields\": \"namedRangeId,warningOnly,editors\"\n }\n }\n ]\n}\n```"]]