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

时间:2018-12-14 06:52:34

标签: javascript google-apps-script google-sheets google-sheets-api

在[[link]] [1]处使用了代码示例,因此无法从Google Apps脚本获取可将命名/受保护范围添加到Google Sheet的Google Sheets API v4代码。它给出了错误(正确的json格式是什么?):

  

接收到无效的JSON有效负载。未知名称“ requests”:找不到字段。 (第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 个答案:

答案 0 :(得分:3)

我认为您的请求正文正确。那么如何进行如下修改?

发件人:

Sheets.Spreadsheets.Values.batchUpdate(

收件人:

Sheets.Spreadsheets.batchUpdate(

参考:

如果请求正文有任何问题,请告诉我。我想考虑这些问题。

编辑:

  

“ requests [0] .add_named_range.named_range.range.sheet_id”(TYPE_INT32)中的值无效,“工作表ID”无效

从您的错误消息中,发现您使用sheet id作为工作表ID。因此,请将工作表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.