已命名 (&A);受保護範圍
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
您可以使用 Google Sheets API 建立、修改及刪除具名或受保護的範圍。本頁的範例說明如何透過 Google 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
。在建立已命名或受保護範圍的 Sheets API 要求的回應中,系統會傳回 ID。您可以使用 spreadsheets.get
方法,在 Spreadsheet
回應主體中取得現有範圍的 ID。
新增具名或受保護的範圍
以下程式碼範例說明如何使用 2 個要求物件。spreadsheets.batchUpdate
第一個範例使用 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
}
}
}
]
}
刪除已命名或受保護的範圍
以下程式碼範例說明如何使用 2 個要求物件。spreadsheets.batchUpdate
第一個範例會使用 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
,
}
}
]
}
更新已命名或受保護的範圍
以下程式碼範例說明如何使用 2 個要求物件。spreadsheets.batchUpdate
第一個範例使用 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"
}
}
]
}
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-08-29 (世界標準時間)。
[null,null,["上次更新時間: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```"]]