【发布时间】:2012-10-28 00:29:16
【问题描述】:
有谁知道是否可以为谷歌电子表格制作一个谷歌应用脚本,以在特定情况发生时保护特定单元格? 外汇。如果 X 出现在“A1”中,那么“A2”应该受到保护吗?
【问题讨论】:
标签: google-apps-script google-sheets
有谁知道是否可以为谷歌电子表格制作一个谷歌应用脚本,以在特定情况发生时保护特定单元格? 外汇。如果 X 出现在“A1”中,那么“A2”应该受到保护吗?
【问题讨论】:
标签: google-apps-script google-sheets
目前还没有用于管理单元保护的 API。这个feature request 要求这个。您可能想要star它以跟踪更新并为它投票。
【讨论】:
事实并非如此。我不相信这是细胞保护的工作方式。单元格被手动保护,或者根本没有保护。
没有启用该功能的单元格函数或脚本对象。
【讨论】:
“功能请求”referred by Henrique G. Abreu 已修复。参考comment #165
今天,我们推出了以编程方式创建和 使用 Apps 脚本操作受保护的范围和受保护的工作表。
使用电子表格服务中的新保护类,您的脚本 可以触及范围或工作表保护的各个方面,就像在 新的用户界面。 (旧的 PageProtection 类,它有更多的限制 功能,将被弃用,但会在您需要时保留 使用较旧的电子表格。新的保护等级仅适用 到较新版本的表格。)
您可以在此处找到更多详细信息:
http://googledevelopers.blogspot.com/2015/02/control-protected-ranges-and-sheets-in.html
https://developers.google.com/apps-script/releases/#february_2015
https://developers.google.com/apps-script/reference/spreadsheet/protection
【讨论】:
我知道这是一个老问题,但谷歌“feture request”(由 Henrique Abreu 发布)到现在(2014 年底)还没有进展
我的预感:当用户被要求编辑之后被锁定的单元格(通过标准或其他类型的逻辑)时,这种功能将是谷歌表单 (http://www.google.com/forms/about) 的一种解决方法
我最近在我的工作场所遇到了类似的情况,我的解决方案非常简单 - 制作一个表格并与相关用户分享。表单域将使用户能够填写他们应该被锁定的数据。该表格最终会生成一张信息表(每次填写表格时都会在线更新)。使用另一个工作表中的“IMPORTRANGE”(https://support.google.com/docs/answer/3093340?hl=en)将导致查询相关工作表中的“锁定”信息。因为数据在另一个工作表中并且表示为公式 - 它不能被编辑(至少不能作为数据)
我真的在考虑一种真正的解决方法,它实际上可以“锁定”一个单元格(通过脚本将其值替换为原始值).. 如果有这样的请求
【讨论】:
我有一个变通办法,代码如下
function protect_named_range(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var target_sheet = ss.getSheetByName('Sheet1');//change "sheet1" for the sheet your range is in
var array_range1 = target_sheet.getRange("A1:A1");
var array_range2 = target_sheet.getRange("A2:A2");
var range_test = array_range1.getValue();// or getFormula or what ever you want to test
if(range_test == "correct answer"){ //if cell A2 = "correct answer" then cell B2 becomes a named range called "named_range"
ss.setNamedRange("named_range", array_range2);
SpreadsheetApp.setActiveSheet(target_sheet);
var sheet = SpreadsheetApp.getActiveSheet();
var permissions = sheet.getSheetProtection();
permissions.setProtected(true);
target_sheet.setSheetProtection(permissions);
}
}
对不起,我离开了一段时间。这是我将使用的基本代码,但是如果单元格 A2 =“正确答案”,它实际上并不保护范围“B2”。相反,如果单元格 A2 =“正确答案”,它会保护名为“sheet1”的工作表,以便只有电子表格所有者可以编辑工作表上的任何内容。
我知道这不是你所追求的,但我希望它可以提供帮助。
【讨论】: