Javascript 保护F列为to时间戳的行
如何在Google工作表中输入数据后锁定或保护行。F列是一个“时间戳”,并且始终为空。当F不是空时,我需要保护行 第二行有一个错误: TypeError:无法读取未定义的属性“范围”Javascript 保护F列为to时间戳的行,javascript,google-apps-script,google-sheets,triggers,Javascript,Google Apps Script,Google Sheets,Triggers,如何在Google工作表中输入数据后锁定或保护行。F列是一个“时间戳”,并且始终为空。当F不是空时,我需要保护行 第二行有一个错误: TypeError:无法读取未定义的属性“范围” 我相信你的目标如下 从如何在Google工作表中输入数据后锁定或保护行。列F是一个“时间戳”,它始终是一个空白。,我猜您希望在向列F的单元格输入值时运行脚本 您希望保护列“F”中包含已编辑单元格的行 修改点: 关于“TypeError”的错误:无法读取未定义的的属性“range”,在这种情况下,您的脚本没有声
我相信你的目标如下
- 从
,我猜您希望在向列F的单元格输入值时运行脚本如何在Google工作表中输入数据后锁定或保护行。列F是一个“时间戳”,它始终是一个空白。
- 您希望保护列“F”中包含已编辑单元格的行
- 关于
“TypeError”的错误:无法读取未定义的
的属性“range”,在这种情况下,您的脚本没有声明
。我认为这就是您出现问题的原因e
- 在这种情况下,为了以所有者身份运行脚本,请使用可安装的OnEdit触发器。为此,需要将函数名从
重命名为其他名称。因为当函数OnEdit
作为可安装的OnEdit触发器安装时,编辑单元格时,脚本将运行2次OnEdit
TheNameofSheetYouwanttHistoryWorkin
“F”列的单元格。这样,OneEdit触发器将运行,脚本也将运行
function installedOnEdit(e) {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;
if (e.range.columnStart == 6 && !e.range.isBlank()) {
var protect = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
protect.addEditor(Session.getEffectiveUser()).removeEditors(protect.getEditors());
if (protect.canDomainEdit()) {
protect.setDomainEdit(false);
}
}
}
注:
- 如果您直接在脚本编辑器中运行installedEndit的函数,则会出现类似
无法读取未定义的属性“range”的错误。因此,请小心。使用此脚本时,请编辑工作表
的列“F”的单元格
- 当该行受保护时,只有所有者可以编辑该行。其他用户不能编辑该行
来看,我无法正确设置OneEdit触发器和,但我不知道在哪里以及如何编写它。
,我无法理解您当前的问题。我再次为我糟糕的英语技能深表歉意。为了正确理解您当前的问题,您能否提供d复制您的问题的详细流程?通过这一点,我想尝试了解它。当您能够合作解决您的问题时,我很高兴。谢谢您,在您的评论之后,我考虑了它并做了所有正确的事情。错误在我身上。在编辑专栏“F”时,在这个脚本中,我还有一个问题,一行被阻止,但如果条件更改为列“a”且整行被阻止,脚本将是什么样子?再次感谢!也就是说,我想把F栏改成A栏@Emil谢谢你的回复。我很高兴你的问题解决了。关于您的新问题,在这种情况下,如何将e.range.columnStart==6
修改为e.range.columnStart==1
?这样,当编辑列“A”的单元格时,脚本将运行。如果您的问题已解决,请按“接受”按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为你的问题和解决方案对他们会有帮助。如果你找不到按钮,尽管告诉我。
function installedOnEdit(e) {
var sh = e.range.getSheet();
if (sh.getName() != 'TheNameOfTheSheetYouWantThisToWorkIn') return;
if (e.range.columnStart == 6 && !e.range.isBlank()) {
var protect = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).protect();
protect.addEditor(Session.getEffectiveUser()).removeEditors(protect.getEditors());
if (protect.canDomainEdit()) {
protect.setDomainEdit(false);
}
}
}