Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
谷歌电子表格API v4在Java中。试图在文档上设置不受保护的单元格范围,任何具有链接的人都可以查看该范围_Java_Google Sheets_Google Api_Google Sheets Api_Google Drive Realtime Api - Fatal编程技术网

谷歌电子表格API v4在Java中。试图在文档上设置不受保护的单元格范围,任何具有链接的人都可以查看该范围

谷歌电子表格API v4在Java中。试图在文档上设置不受保护的单元格范围,任何具有链接的人都可以查看该范围,java,google-sheets,google-api,google-sheets-api,google-drive-realtime-api,Java,Google Sheets,Google Api,Google Sheets Api,Google Drive Realtime Api,所以我希望能够创建一个工作表,用一些数据填充它,并创建一个用于输入的列,但我希望保护所有其他单元格。我正在使用Java/eclipse来运行API 我遇到的问题似乎是某种缺陷。当我打开文档时,它会通知我,我(所有者)是唯一可以编辑范围的人,但当登录到一个匿名窗口时,它会声明“您和一个其他用户可以编辑此表”。任何具有该链接的人都可以编辑文档中的任何单元格,尽管它声明“Sheet1,A1除外:A18”在受保护的范围内 我还注意到一件奇怪的事情,若我作为所有者进入受保护的范围,单击我生成的范围,然后单

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

我遇到的问题似乎是某种缺陷。当我打开文档时,它会通知我,我(所有者)是唯一可以编辑范围的人,但当登录到一个匿名窗口时,它会声明“您和一个其他用户可以编辑此表”。任何具有该链接的人都可以编辑文档中的任何单元格,尽管它声明“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)));
}
public请求取消保护范围(字符串id,GridRange){
列表网格=新的ArrayList();
添加(范围);
返回新请求()
.setAddProtectedRange(新的AddProtectedRangeRequest()
.setProtectedRange(新的ProtectedRange()
.setRequestingUserCanEdit(错误)
.setRange(新的GridRange())
.setUnprotectedRanges(网格));
}

这里有几个问题。根据文件

  • requestingUserCanEdit
    字段是只读的,因此设置没有影响
  • 未设置
    编辑器
    字段,因此受保护范围实际上未受到保护。它默认为与电子表格本身相同的访问控制。必须将编辑器设置为有效对象
  • GridRange上没有设置图纸ID。这意味着它将默认为图纸id 0。可能需要显式设置图纸ID

谢谢,我会试试这个。