Google Spreadsheet API v4在Java中。尝试在文档上设置不受保护的单元格区域,可以向链接

时间:2017-06-06 20:50:32

标签: java google-sheets google-api google-sheets-api google-drive-realtime-api

所以我希望能够创建一个工作表,用一些数据填充它,并创建一个用于输入的列,但我想保护所有其他单元格。我正在使用Java / eclipse来运行API。

我遇到的问题似乎是某种错误。当我打开文档时,它通知我,我(所有者)是唯一可以编辑范围的人,但是当登录到隐身窗口时,它会指出"您和另一个用户可以编辑此工作表&#34 ;。任何有链接的人都可以编辑文档中的任何单元格,尽管它声明" Sheet1除了A1:A18"在受保护的范围内。

奇怪的是我也注意到了,如果我作为所有者进入受保护的范围,请点击我生成的范围,然后点击权限 - >完成后,它最终确定了它应该如何表现的范围。问题在于最终产品我不能手动进入这些文件。

我要进入的顺序是: 创建文件 - >添加数据 - >设置不受保护的范围 - >任何有链接的人都可以设置视图。

添加范围之后,它会在工作表本身上查看我自己添加它的确切方式,但它的行为方式并不相同。有没有人对这个过程有任何好运?我在下面列出了我对受保护范围的请求。

如果您需要更多信息,我会尽快回复。

public Request unProtectRange(String id, GridRange range) {
    List<GridRange> grids = new ArrayList<GridRange>();
    grids.add(range);
    return new Request()
        .setAddProtectedRange(new AddProtectedRangeRequest()
            .setProtectedRange(new ProtectedRange()
                .setRequestingUserCanEdit(false)
                    .setRange(new GridRange())
                        .setUnprotectedRanges(grids)));
}

1 个答案:

答案 0 :(得分:1)

这里有一些问题。根据{{​​3}}文档...

  • requestingUserCanEdit字段是只读的,因此设置无影响。
  • 未设置editors字段,因此受保护范围实际上未受到保护。它默认使用与电子表格本身相同的访问控制。您必须将编辑器设置为有效的ProtectedRange对象。
  • GridRange上没有设置sheetId。这意味着它将默认为工作表ID 0.您可能希望显式设置工作表ID。