Google apps script 当另一个单元格已清除时,如何清除特定单元格?
我有一个用于Google Docs电子表格的脚本,当填充特定列中的任何单元格时,它会自动在该行的不同列中放置时间戳:Google apps script 当另一个单元格已清除时,如何清除特定单元格?,google-apps-script,Google Apps Script,我有一个用于Google Docs电子表格的脚本,当填充特定列中的任何单元格时,它会自动在该行的不同列中放置时间戳: function onEdit() { var s = SpreadsheetApp.getActiveSheet(); if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet var r = s.getActiveCell(); if( r.getColumn() == 9
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
var r = s.getActiveCell();
if( r.getColumn() == 9 ) { //checks the column
var nextCell = r.offset(0, 3);
if( nextCell.getValue() === '' ) //is empty?
var time = new Date();
time = Utilities.formatDate(time, "Canada/Eastern", "M/dd/Y, h:mm:ss");
nextCell.setValue(time);
};
};
}
剧本写得很好。但是,如果所述单元已被清除,我希望脚本删除该时间戳
或者我可以换一种方式来回答这个问题:当一行中的另一个特定单元格被清除时,我如何清除该行中的另一个特定单元格?代码几乎相同,我将其简化了一点,以便更容易理解它在做什么 编辑: 更好的代码可以防止在修改第9列中的单元格时出现问题 我使用了onEdit触发器中的参数(在本例中称为e),请参阅以了解有关该参数的详细信息
function onEdit(e) {
var s = SpreadsheetApp.getActiveSheet();
Logger.log(JSON.stringify(e)+' ------------------> value = '+e.value);
var r = e.range;
var nextCell = r.offset(0, 3);
if( s.getName() == "Sheet1" && r.getColumn() == 9 ){ //checks that we're on the correct sheet & column
if( nextCell.getValue() === '' && e.value !=null){ //is empty?
var time = new Date();
time = Utilities.formatDate(time, "Canada/Eastern", "M/dd/Y, h:mm:ss");
nextCell.setValue(time);
}else{
if(e.value==null){ nextCell.setValue('')};
}
}
}
我看到以前的所有评论都被删除了,所以问题出在这里。以及解决方案。上面的代码(对于下一个尝试):如果在目标单元格中粘贴任何格式化文本,此代码将无法工作。您需要“仅粘贴值”(Shift+Ctrl+V),以便它执行,并且日期应按预期显示。