代码之家  ›  专栏  ›  技术社区  ›  Din

Google Sheets API v4:添加命名或受保护的范围

  •  1
  • Din  · 技术社区  · 6 年前

    接收到无效的JSON负载。未知名称“请求”:找不到字段。(第5行,文件“代码”)

    function protectSheet() {
        var sheetId = "sheet id";
        var spreadsheetId = "spreadsheet id";
    
        Sheets.Spreadsheets.Values.batchUpdate(
        {
            "requests": [
            {
                "addNamedRange": {
                    "namedRange": {
                        "name": "Counts",
                        "range": {
                            "sheetId": sheetId,
                            "startRowIndex": 0,
                            "endRowIndex": 3,
                            "startColumnIndex": 0,
                            "endColumnIndex": 5,
                        },
                    }
                }
            },
            {
                "addProtectedRange": {
                    "protectedRange": {
                        "range": {
                            "sheetId": sheetId,
                            "startRowIndex": 3,
                            "endRowIndex": 4,
                            "startColumnIndex": 0,
                            "endColumnIndex": 5,
                        },
                        "description": "Protecting total row",
                        "warningOnly": true
                    }
                }
            }
            ]
        }, spreadsheetId);
    }
    
    
    [1]: https://developers.google.com/sheets/api/samples/ranges
    
    1 回复  |  直到 6 年前
        1
  •  5
  •   Tanaike    6 年前

    我认为你的要求是正确的。那么,按如下方式修改如何?

    发件人:

    Sheets.Spreadsheets.Values.batchUpdate(
    

    致:

    Sheets.Spreadsheets.batchUpdate(
    

    如果您对请求机构有任何问题,请告诉我。我想考虑一下这些问题。

    编辑:

    “请求[0]处的值无效。添加\u命名\u范围。命名\u范围。范围。工作表\u id'(类型\u INT32),“工作表id”无效

    从错误消息中,发现您使用了 sheet id 工作表id

    如果要手动检索工作表ID,请检查 here .

    如果您想使用脚本检索工作表ID,这个如何?

    var spreadsheetId = "spreadsheet id"; // Please set spreadsheetId here.
    var ss = SpreadsheetApp.openById(spreadsheetId);
    var sheetId = ss.getSheetByName(sheetName).getSheetId(); // sheetName is the sheet name of each sheet.
    

    var sheetId = ss.getSheets()[index].getSheetId(); // index is the index of sheet. This is start from 0.