我一直在尝试修改在Google工作表中修改特定单元格时的时间戳。我的最终目标是,如果将单元格编辑为某个值,则修改后的时间戳会反映,如果完全删除了单元格的内容,则时间戳也会删除。我当前的脚本如下所示:
function onEdit()
{
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Sheet1" ) {
var r = s.getActiveCell();
if( r.getColumn() == 4 ) {
var nextCell = r.offset(0,1);
if((nextCell.getValue() == "" && r.value != "") || (nextCell.getValue() != "" && r.value != "")) {
nextCell.setValue(new Date());
} else if(nextCell.getValue() != "" && r.value == "") {
nextCell.setValue("");
}
}
}
}
现在,如果对单元格进行任何修改,此代码可以将时间戳更改为当前,但如果我完全删除单元格的内容,则时间戳不会删除,它会再次更改为当前时间戳。
答案 0 :(得分:0)
试试这个:
function onEdit()
{
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Sheet1" )
{
var r = s.getActiveCell();
var rvalue=r.getValue();
if( r.getColumn() == 4 )
{
var nextCell = r.offset(0,1);
if(rvalue != ""))
{
nextCell.setValue(new Date());
}
else
{
nextCell.setValue("");
}
}
}
}
你也可以这样做:
function onEdit(e)
{
if(e.source.getActiveSheet().getName()=="Sheet1")
{
if(e.range.getColumn()==4)
{
var nextCell = e.range.offset(0,1);
if(e.value!=""))
{
nextCell.setValue(new Date());
}
else
{
nextCell.setValue("");
}
}
}
}
虽然后者调试起来有点困难。
注意:项目代码中只能有一个onEdit()。如果你有其他人,那么他们都需要与适当的条件逻辑合并为一个,以防止他们不恰当地互动。