【发布时间】:2026-02-05 18:20:04
【问题描述】:
我有一个脚本,每次有人编辑 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");
}
}
有人知道如何锁定日期的第一个生成值吗?
感谢您的帮助,
【问题讨论】:
-
第一次是什么意思,也许你的意思是每天第一次,每周第一次,夏季活动后的第一次,或者只是你完成编程后的第一次,就是这样跨度>
-
第一次,我的意思是:我用客户端名称填充 Col3,这个值不应该改变。但是如果我需要修改客户端名称(格式或内容),生成的单元格将更新今天日期的时间戳,而我想保留我第一次填写客户端名称的日期跨度>
-
您可以将 PropertiesService 与一个脚本一起使用,如果没有这样的属性,该脚本只会在该属性中存储数据。
标签: javascript google-apps-script google-sheets