我正在编写给我带来麻烦的脚本。列G具有选择列表值M1,M2,M3,S1,S2,S3,S4,S5,C1,C2,C3。当我从选择列表中选择任何S值(S1,S2,S3,S4,S5)时,我希望在t列中插入一个时间戳。我希望仅在第一次出现时执行此操作,而不希望在随后更新或更改g列中的选择列表值时执行此操作。
我已经关闭,但是当前脚本会更新整个t列中的日期。
如果可能的话,我也想清理第9行。
到目前为止,我已经拥有了:
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('ClientList');
var stageValues = s.getRange('g3:g').getValues();
var dateValues = s.getRange('t3:t').getValues();
for (var row in stageValues)
for (var col in stageValues[row])
if (stageValues[row][col] == 'S1' || stageValues[row][col] == 'S2' || stageValues[row][col] == 'S3' || stageValues[row][col] == 'S4' || stageValues[row][col] == 'S5' && dateValues[row][col] == '') {
num = parseInt(row) + 3;
s.getRange('t' + num).setValue(new Date());
}
};
答案 0 :(得分:0)
您说的是选择列表值,我假设您的意思是一个下拉列表。但是不管这是否可行。每当在G列中手动编辑单元格时,onEdit触发器都会检查“ S”值和T列中的时间戳。如果找不到时间戳,它将放置一个新的时间戳。 “ e”是触发对象,其中包含有关已编辑单元格的信息。
function onEdit(e) {
try {
if( e.range.getSheet().getName() === "ClientList" ) {
if( e.range.getColumn() === 7 ) { // edit in column G
if( e.value.charAt(0) === "S" ) {
if( e.range.offset(0,13,1,1).getValue() === "" ) { // no value in T
e.range.offset(0,13,1,1).setValue(new Date());
}
}
}
}
}
catch(err) {
Logger.log(err);
}
}