google-apps-script - 当该行中的日期早于今天时自动保护行
问题描述
当日期在今天之前时,我需要根据每行 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, 1, protectRow, 13);
protection[0].setRange(range);
}else{
sh.getRange(3, 1, protectRow, 13).protect();
}
}
例子:
在这里,我复制了您的数据、格式化日期并重新打开了文档。
*笔记:
- 电子表格中日期的格式应与 curDate 变量中的格式相匹配。
- 您可以通过更改 curDate 中 formatDate() 的第二个参数来更改时区。
- 日期应该排序。
参考:
推荐阅读
- javascript - Express JS:如何通过标头请求管理路由?
- css - 为没有父元素的子元素应用 CSS 选择器
- url - 我可以对 Jupyter Lab 中的项目进行永久链接吗?
- r - 从 1 中减去存储在列表列表中的矩阵中的每个值
- soap - setRequestproperty() 已连接错误(也在非调试模式下)
- amazon-s3 - EMR 上的 PySpark 作业适用于较小的文件,但不适用于较大的文件
- python - protobuf : 可选属性的值未清除
- delphi - 使用 ENTER 选择时 DBLookUpComboBox 不会将记录保存在数据库中 - Delphi 7
- arrays - 增加无类型数组参数的方法
- javascript - “没有可用的付款方式。” Braintree 沙箱出错