我想使用应用程序脚本添加时间戳,但是粘贴多行时它不起作用



每次只编辑一行代码。但是我也需要复制和粘贴多行,时间戳只出现在第一行(我粘贴它的地方)。

function onEdit(e) {

var range = e.range;
var spreadSheet = e.source;
var sheetName = spreadSheet.getActiveSheet().getName();
var row = range.getRow();  
var activeSheetName = 'Analysis';
var statusColumnNum = 17;
var updateColumnNum = 15;
if(sheetName == activeSheetName)
{
if(spreadSheet.getActiveSheet().getRange(row,statusColumnNum).getValues() == 'No Further Action' || spreadSheet.getActiveSheet().getRange(row,statusColumnNum).getValues() == 'Invalid Code' || spreadSheet.getActiveSheet().getRange(row,statusColumnNum).getValues() == 'For BAF Filing'){
if(spreadSheet.getActiveSheet().getRange(row,updateColumnNum).getValue() == ''){
var new_date = new Date();
spreadSheet.getActiveSheet().getRange(row,updateColumnNum).setValue(new_date).setNumberFormat("MM/dd/yyyy hh:mm:ss A/P");
}
}
else{
spreadSheet.getActiveSheet().getRange(row,updateColumnNum).setValue('');
}
} 
} 

在您的脚本中,如何修改以下内容?

修改脚本:

function onEdit(e) {
var range = e.range;
var spreadSheet = e.source;
var sheet = spreadSheet.getActiveSheet();
var sheetName = sheet.getName();
var activeSheetName = 'Analysis';
var statusColumnNum = 17;
var updateColumnNum = 15;
var texts = ['No Further Action', 'Invalid Code', 'For BAF Filing'];
if (sheetName == activeSheetName) {
var range = sheet.getRange(range.rowStart, statusColumnNum, range.rowEnd - range.rowStart + 1);
var values = range.getValues();
var new_date = new Date();
range.offset(0, updateColumnNum - statusColumnNum)
.setNumberFormat("MM/dd/yyyy hh:mm:ss A/P")
.setValues(values.map(([q]) => [texts.includes(q) ? new_date : null]));
}
}
  • 在本例中,当通过复制和粘贴值来运行此脚本时,将检查所有已编辑的行。这样,日期就会插入到预期的行中。
  • 参考:

  • map ()

相关内容

  • 没有找到相关文章

最新更新