![](/img/trans.png)
[英]Google Sheets Script to lock or unlock a row depending on the value in the cell of a column
[英]Lock the value of a cell after first edit script running and don't update the cell value for other edits
我有一个脚本,每次有人编辑 Col3 或 Col16 时,它都会自动填充 Google 电子表格上的单元格。
如果有人编辑或修改 Col3 中的值,自动单元格中的时间戳将更新,而我想保留这些单元格中的第一个值,即第一次编辑 Col 3 时的生成日期。
function onEdit(event) {
// assumes source data in sheet named Elisa-Miriam-Victor-Hanane-Sarah-Apoorva-Carlino
// target sheet of move to named Archive
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
// Fill automatically Columns Q and R when PO number is provided in Column P.
// In Q: generates the date of when the PO is mentioned; in R: it generates the PO folder name
var sh=event.range.getSheet();
var namesA=["Miriam","Elisa","Hanane","Sarah","Apoorva","Victor","Carlino"];
if(namesA.indexOf(sh.getName())!=-1 && event.range.columnStart==16) { // when PO 1 N° is filled
event.range.offset(0,1).setValue(new Date()).setNumberFormat("yyyy-MM-dd");
event.range.offset(0,2).setFormula(Utilities.formatString('=CONCATENATE(TEXT(Q%s;"yyyy-MM-dd");" - ";P%s)',event.range.rowStart,event.range.rowStart,event.range.rowStart));
}
if(namesA.indexOf(sh.getName())!=-1 && event.range.columnStart==3) { // when client is mentioned in Col 3
event.range.offset(0,9).setFormula(Utilities.formatString('=IFERROR(vlookup(E%s;IMPORTRANGE("https://docs.google.com/spreadsheets/d/1zN99rXMltbMfD_OS22NxZApgvabTG-eRv7FOIS7pBvk/edit#gid=1560028291";"Treatment!A:E");2;false);"")',event.range.rowStart,event.range.rowStart,event.range.rowStart));
event.range.offset(0,31).setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss");
}
}
有谁知道如何锁定日期的第一个生成值?
谢谢您的帮助,
function onEdit(event) {
...
var offsetRange = event.range.offset(0,31);
if(offsetRange.isBlank()){
offsetRange.setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss");
}
}
}
仅保存第一次
function saveFirstTimeOnly(key,value) {
const ps=PropertiesService.getScriptProperties();
var obj=ps.getProperties();
if(!obj.hasOwnProperty(key)) {
ps.setProperty(key, value);
}
}
您可以使用任何东西作为密钥。 可能就像“SheetName”+“RangeInA1Notation”一样,您可能必须为此使用可安装的触发器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.