【问题标题】:Google Sheets API addProtectedRange Error: No grid with id: 0Google Sheets API addProtectedRange 错误:没有 ID 为 0 的网格
【发布时间】:2017-10-11 19:34:27
【问题描述】:

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

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()

【问题讨论】:

    标签: google-sheets-api


    【解决方案1】:

    遇到了同样的问题。我将 sheet idsheet index 混淆了。

    找到工作表 ID 的最简单方法是在您打开电子表格/工作表时在浏览器 URL 中:https://docs.google.com/spreadsheets/d/{spreadsheetId} /edit#gid={sheetId}

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

    【讨论】:

    • @PatrickRainsberry 你是如何得到 sheetId 的???即使我从范围字段中省略“sheetId”,我也会收到此错误!我从来没有在浏览器中指定过工作表 ID,所以我看不出这甚至可以帮助解决这个问题,因为您必须先知道它才能将其作为 URL 输入!
    • 我想你可能混淆了 sheetId 和 spreadsheetId。在这种情况下,我需要 sheetId。大多数操作都需要电子表格 ID。您不需要 sheetId 即可在浏览器中打开文档。
    • 有关sheetId 属性的更多信息,请参阅developers.google.com/sheets/api/guides/concepts#sheet_id
    【解决方案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);
      }
    });
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-17
        • 1970-01-01
        • 1970-01-01
        • 2017-09-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多