Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Javascript 保护F列为to时间戳的行_Javascript_Google Apps Script_Google Sheets_Triggers - Fatal编程技术网

Javascript 保护F列为to时间戳的行

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”,在这种情况下,您的脚本没有声

如何在Google工作表中输入数据后锁定或保护行。F列是一个“时间戳”,并且始终为空。当F不是空时,我需要保护行

第二行有一个错误:

TypeError:无法读取未定义的属性“范围”


我相信你的目标如下

  • 如何在Google工作表中输入数据后锁定或保护行。列F是一个“时间戳”,它始终是一个空白。
    ,我猜您希望在向列F的单元格输入值时运行脚本
  • 您希望保护列“F”中包含已编辑单元格的行
修改点:
  • 关于
    “TypeError”的错误:无法读取未定义的
    的属性“range”,在这种情况下,您的脚本没有声明
    e
    。我认为这就是您出现问题的原因
  • 在这种情况下,为了以所有者身份运行脚本,请使用可安装的OnEdit触发器。为此,需要将函数名从
    OnEdit
    重命名为其他名称。因为当函数
    OnEdit
    作为可安装的OnEdit触发器安装时,编辑单元格时,脚本将运行2次
当这反映到脚本中时,它将变成如下所示

修改脚本: 请将以下脚本复制并粘贴到Google电子表格和的脚本编辑器中。当您要运行此脚本时,请编辑工作表
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”的单元格
  • 当该行受保护时,只有所有者可以编辑该行。其他用户不能编辑该行
参考资料:

感谢您回答我的问题!目前,我无法正确设置onEdit触发器,如果您能帮助解决此问题,我将不胜感激。我是新手,提前感谢!我访问了正在安装的触发器的链接,但我不知道在何处以及如何编写它。@Emil感谢您的回答。我必须为我的便便道歉r英语技能。不幸的是,从目前的
来看,我无法正确设置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);
    }
  }
}