Google表格API addProtectedRange错误:没有ID为0的网格

时间:2017-10-11 19:34:27

标签: google-sheets-api

我不确定我是否犯了错误,或者这可能与此处报道的相同问题有关:

Google Sheets API V4 - Autofill Error - No grid with id: 0

我得到了:

HttpError 400
 "无效请求[0] .addProtectedRange:没有ID为1"

的网格

代码是这样的(删除了额外的addProtectedRange对象)

def add_protected_ranges(spreadsheet_id):
    service = get_sheets_service()

    requests = [
    {
        "addProtectedRange": {
            'protectedRange': {
                "range": {
                    "sheetId": 1,
                    "startRowIndex": 0,
                    "endRowIndex": 0,
                    "startColumnIndex": 0
                },
                "description": "Headers must not be changed",
                "warningOnly": True
            }
        }
        }

    ]

    body = {
        'requests': requests
    }
    response = service.spreadsheets().batchUpdate(spreadsheetId=spreadsheet_id,
                                              body=body).execute()

3 个答案:

答案 0 :(得分:3)

有同样的问题。我将表单ID 表索引混淆。

当您打开电子表格/工作表时,最简单的方法是在浏览器网址中找到 工作表ID https://docs.google.com/spreadsheets/d/ {spreadsheetId} /编辑#GID = <强> {sheetId}

如果您正在寻找更具程序化的方式,则可以在SheetProperties上找到该属性。

答案 1 :(得分:2)

我知道这是一个老问题,但我也在寻找它。您正在寻找:

res.data.sheets[].properties.sheetId

要获取sheetId(而不是spreadsheetId),请使用:

sheets.spreadsheets.get({
  spreadsheetId
}).then(res => {
  console.log("All the sheets:");
  for(i in res.data.sheets) {
    let title = res.data.sheets[i].properties.title;
    let id = res.data.sheets[i].properties.sheetId;
    console.log(title + ': ' + id);
  }
});

答案 2 :(得分:0)

请确保您的电子表格中有一个工作簿,其ID为1。在Google工作表中,电子表格可以包含多个工作表(网格),每个工作表(网格)都有唯一的ID。