当前位置: 首页 > 知识库问答 >
问题:

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

廖鸿达
2023-03-14

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

接收到无效的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个答案

梁丘洲
2023-03-14

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

Sheets.Spreadsheets.Values.batchUpdate(
Sheets.Spreadsheets.batchUpdate(
  • 电子表格。批量更新

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

请求[0]。add_named_range.named_range.range.sheet_id(TYPE_INT32),工作表id无效

从您的错误消息中,发现您使用工作表id作为工作表ID。所以请将工作表ID从工作表ID修改为正确的。

如果要手动检索工作表ID。请检查这里。

如果您想使用脚本检索工作表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.
 类似资料:
  • 描述 (Description) 当guard应用于名称空间时,仅当保护条件返回true时才使用由名称空间定义的mixin。 namespace guard与mixins上的namespace guard类似。 例子 (Example) 以下示例演示了在LESS文件中使用受guarded namespaces - <html> <head> <link rel = "styles

  • 问题内容: 我为SCJP做准备,我也知道受保护成员的作用域在包中以及在其他包中(在某些情况下,例如只有继承才可能)。 例如:我有三个类作为Parentclass Childclass Friendclass 这背后的原因是什么,在Friendclass中,成员x将不接受为其分配值,而对于Childclass而言,它充当私有成员。 问题答案: 您甚至无法访问,因为具有默认可见性(不受保护)。参见ht

  • 6xx受保护 600 Series,Repliesregardingconfidentialityandintegrity 631 Integrityprotectedreply. 632 Confidentialityandintegrityprotectedreply. 633 Confidentialityprotectedreply.

  • 假设我有一个抽象类: 使用方法如下: 这段代码在编译时失败,这是意料之中的。 但以下代码编译成功,这似乎令人惊讶: 不同之处在于,在后一种情况下,我访问的方法没有命名引用。为什么编译器允许这样的访问?

  • 在< code>/users下,我有一些需要身份验证令牌的路由,还有一些不需要。为了实现这一点,我做了以下工作。 然后我按照以下方式安装这些路线。 当我向< code>/users发送POST时,它运行预期的路径,但是当< code>next()被调用时,< code > protected _ middleware 运行。这是因为它在标有“D”的行中找到了下一个< code>/users定义。

  • 我可以问一下,我如何通过脚本添加编辑器到受保护的工作表和范围中的权限?我尝试使用,它需要枚举所有的电子邮件地址,对吗?但是,有没有一个简单的或另一个方法让我做到这一点呢?如果没有别的办法,我有90张纸要一张一张修改。每个文件的电子邮件地址不相同。 我正在考虑在Google Drive中自动获得与人和组共享选项中的所有编辑器。这有可能做到吗?