微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当该行中的日期早于今天时自动保护行

如何解决当该行中的日期早于今天时自动保护行

当日期在今天之前时,我需要根据每行 A 列中发生的日期自动保护行我有一个表格,在 A 列中有日期,在与这些日期相关的其他列中有不同的数据

我需要编辑器能够编辑具有当前日期和所有后续日期但不是前几天的行。第二天,过去日期的行将受到保护。

https://docs.google.com/spreadsheets/d/1iEySLLmngzgFTJWWHhEZtUfU_GBxG-X77CvGTqu7U8Q/edit?usp=sharing

解决方法

只要用户打开电子表格,此代码就会运行。这也将为小于当前日期的日期增加保护。

function onOpen(e) {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var dateRange = sh.getRange(3,1,sh.getLastRow()-2,1);
  var val = dateRange.getDisplayValues();
  var curDate = Utilities.formatDate(new Date(),"GMT+8","M/dd/YYYY");
  var protectRow;
  //check if date is less than the current date
  for(var i = 0; i < val.length; i++){
    if(val[i][0]>=curDate){
      protectRow = i;
      break;
    }
  }
  
  var protection = sh.getProtections(SpreadsheetApp.ProtectionType.RANGE);
  //If protection exists,update else add new one.
  if(protection.length > 0){
    var range = sh.getRange(3,protectRow,13);
    protection[0].setRange(range);
  }else{
    sh.getRange(3,13).protect();
  }
}

示例:

在这里,我复制了您的数据、格式化了日期并重新打开了文档。

enter image description here

*注意:

  • 电子表格中日期的格式应与 curDate 变量中的格式相匹配。
  • 您可以通过更改 curDate 中 formatDate() 的第二个参数来更改时区。
  • 日期应该排序。

参考文献:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。