Google apps script 使用google apps脚本(使用动态按钮或命令)保护单元格

Google apps script 使用google apps脚本(使用动态按钮或命令)保护单元格,google-apps-script,google-sheets,Google Apps Script,Google Sheets,有人知道是否有可能为谷歌电子表格制作一个谷歌应用程序脚本,在特定情况下保护特定的单元格吗? 外汇。如果X出现在“A1”中,那么“A2”应该受到保护吗 事实并非如此。我不相信这就是细胞保护的工作方式。单元格是手动保护的,或者根本不受保护 没有支持该功能的单元函数或脚本对象。还没有用于管理单元保护的API。这就是为什么。您可能希望启动它以跟踪更新并投票支持它。我有一个解决方案,代码如下 函数保护_命名_range(){ var ss=SpreadsheetApp.getActiveSpreadshe

有人知道是否有可能为谷歌电子表格制作一个谷歌应用程序脚本,在特定情况下保护特定的单元格吗?
外汇。如果X出现在“A1”中,那么“A2”应该受到保护吗

事实并非如此。我不相信这就是细胞保护的工作方式。单元格是手动保护的,或者根本不受保护


没有支持该功能的单元函数或脚本对象。

还没有用于管理单元保护的API。这就是为什么。您可能希望启动它以跟踪更新并投票支持它。

我有一个解决方案,代码如下

函数保护_命名_range(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var target_sheet=ss.getSheetByName('Sheet1');//为您所在范围内的工作表更改“Sheet1”
var数组_range1=target_sheet.getRange(“A1:A1”);
var array_range2=target_sheet.getRange(“A2:A2”);
var range_test=array_range1.getValue();//或getFormula或任何您想要测试的内容
如果(range_test==“correct answer”){//如果单元格A2=“correct answer”,则单元格B2将成为一个名为“named_range”的命名范围
ss.setNamedRange(“命名范围”,数组范围2);
电子表格应用程序setActiveSheet(目标表格);
var sheet=SpreadsheetApp.getActiveSheet();
var permissions=sheet.getSheetProtection();
permissions.setProtected(true);
目标表。设置表保护(权限);
}
}
对不起,我离开一会儿了。这是我将使用的基本代码,但是如果单元格A2=“正确答案”,它实际上不会保护范围“B2”。相反,如果单元格A2=“正确答案”,它会保护名为“sheet1”的工作表,以便只有电子表格所有者可以编辑工作表上的任何内容


我知道这并不完全是你想要的,但我希望它能有所帮助。

我知道这是一个古老的问题,而且仍然存在-谷歌“feture request”(由Henrique Abreu发布)到现在(2014年底)还没有进展

我的直觉:当用户被要求编辑随后被锁定的单元格时(根据标准或另一种逻辑),这种功能将是google forms()的一种变通方法

我最近在我的工作场所遇到了类似的情况,我的解决方案非常简单——制作一个表单并与相关用户共享。表单字段将使用户能够填写他们应该锁定的数据。该表单最终将生成一张信息表(每次填写表单时在线更新)。使用“从另一张工作表导入(”)将导致查询相关工作表中的“锁定”信息。由于数据位于另一张工作表中,并且表示为公式,因此无法编辑(至少不能作为数据)

我真的在考虑一个真正的解决方案,它可以实际“锁定”一个单元格(通过脚本将其值替换为原始值)…如果有这样的请求,那么“功能请求”是固定的。参考

今天,我们已经启动了以编程方式创建和 使用应用程序脚本操作受保护的范围和受保护的工作表

使用电子表格服务中的新保护类,您的脚本 可以触摸范围或床单保护的各个方面,就像在 新的用户界面。(旧的页面保护类,有更多的限制。) 功能,将被弃用,但将保留在您需要的情况下 使用旧的电子表格。新的保护等级仅适用 到图纸的较新版本。)

您可以在此处找到更多详细信息:


很酷-你能完成它吗?请:D如果你能完成代码就好了-到目前为止它看起来很棒!这是为了保护一整张纸,而不是一组细胞。-1,正如@eddyparkinson所说的,问题是关于细胞保护而不是纸保护