Google Sheets API を使用すると、名前付き範囲や保護された範囲の作成、変更、削除を行うことができます。このページの例では、Sheets API を使用して一般的なスプレッドシートの操作を行う方法を示します。
これらの例は、言語に依存しない HTTP リクエストの形式で示されています。Google API クライアント ライブラリを使用してさまざまな言語でバッチ更新を実装する方法については、スプレッドシートを更新するをご覧ください。
以下の例では、SPREADSHEET_ID と SHEET_ID というプレースホルダを使用して、これらの ID をどこで指定するかを示しています。スプレッドシート ID はスプレッドシートの URL で確認できます。シート ID は、spreadsheets.get メソッドを使用して取得できます。範囲は A1 形式で指定します。範囲の例: Sheet1!A1:D5。
また、プレースホルダ NAMED_RANGE_ID と PROTECTED_RANGE_ID は、名前付き範囲と保護された範囲の ID を提供します。namedRangeId と protectedRangeId は、関連する範囲の更新または削除をリクエストするときに使用されます。この ID は、名前付き範囲または保護された範囲を作成する Sheets API リクエストのレスポンスで返されます。既存の範囲の ID は、Spreadsheet レスポンス本文の spreadsheets.get メソッドで取得できます。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-08-29 UTC。"],[],[],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```"]]