我有一个脚本,每当有人编辑Col3或Col16时,它都会自动填充谷歌电子表格上的单元格。
我的问题是:
如果有人编辑或修改了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");
}
}有人知道我如何锁定日期的第一个生成值吗?
谢谢你的帮助,
发布于 2020-05-19 15:21:27
在分配值之前,可以检查单元格是否为空:
function onEdit(event) {
...
var offsetRange = event.range.offset(0,31);
if(offsetRange.isBlank()){
offsetRange.setValue(new Date()).setNumberFormat("yyyy-MM-dd HH:mm:ss");
}
}
}发布于 2020-05-19 16:47:50
只保存第一次
function saveFirstTimeOnly(key,value) {
const ps=PropertiesService.getScriptProperties();
var obj=ps.getProperties();
if(!obj.hasOwnProperty(key)) {
ps.setProperty(key, value);
}
}你可以用任何东西来做钥匙。就像'SheetName‘+ 'RangeInA1Notation’一样,您可能不得不使用一个可安装的触发器来完成这个任务。
https://stackoverflow.com/questions/61893454
复制相似问题