【发布时间】:2019-11-28 13:50:13
【问题描述】:
我正在尝试创建一个脚本,当您在第 2 列中输入一个值时,它会生成一个时间戳,如果单元格为空白,时间戳会自行清除。
我试图将“我的代码”和“其他代码”结合起来。 问题是,当我清除第 2 列中的单元格时,时间戳仍保留在第 1 列中。
如何修复我的代码以使其正常工作?
如果有人可以提供帮助,请给你力量。
编辑:@Raserhin 已经回答了
我的代码:original source
function onEdit(e) {
var s = e.source.getActiveSheet(),
watchCols = [2],
offsetCol = [-1],
ind = watchCols.indexOf(e.range.columnStart)
if (s.getName() !== "work" || ind === -1) return;
e.range.offset(0, offsetCol[ind])
.setValue(new Date());
}
我尝试与之结合的其他代码。 How to modify current insert timestamp script to remove timestamp when cell is cleared
function onEdit(e) {
var rg=e.range;
var sh=e.range.getSheet();
var name=sh.getName();
if(name=="CHECK OUT" || name== "CHECK IN" || name== "MISC OUT" || name=="MISC IN"){
if(rg.columnStart==1) {
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
if(vA[i][0]) {
sh.getRange(rg.rowStart + i,8).setValue(new Date());
}else{
sh.getRange(rg.rowStart + i,8).setValue('');
}
}
}
}
}
我的组合代码: https://docs.google.com/spreadsheets/d/13zGg9TUFQcqapG6-ZxB3CPJNwFsisxT98gbkrqU0Wns/edit?usp=sharing
function onEdit(e) {
var rg=e.range;
var sh=e.range.getSheet();
var name=sh.getName();
var s = e.source.getActiveSheet(),
watchCols = [2],
offsetCol = [-1],
ind = watchCols.indexOf(e.range.columnStart)
if (s.getName() !== "work" || ind === -1) return;
e.range.offset(0, offsetCol[ind])
.setValue(new Date());
if(rg.columnStart==1) {
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
if(vA[i][0]) {
sh.getRange(rg.rowStart + i,8).setValue(new Date());
}else{
sh.getRange(rg.rowStart + i,8).setValue('');
}
}
}
}
编辑: 感谢@Raserhin 注意到我的错误。
//Working code
function onEdit(e) {
var rg=e.range;
var sh=e.range.getSheet();
var name=sh.getName();
var s = e.source.getActiveSheet(),
watchCols = [2],
offsetCol = [-1],
ind = watchCols.indexOf(e.range.columnStart)
if (s.getName() !== "work" || ind === -1) return;
e.range.offset(0, offsetCol[ind])
.setValue(new Date());
if(rg.columnStart==2) { // Change 1 to 2
var vA=rg.getValues();
for(var i=0;i<vA.length;i++){
if(vA[i][0]) {
sh.getRange(rg.rowStart + i,1).setValue(new Date()); // Change 8 to 1
}else{
sh.getRange(rg.rowStart + i,1).setValue(''); // Change 8 to 1
}
}
}
}
【问题讨论】:
标签: google-apps-script google-sheets timestamp