我正在尝试建立一个出色的待办事项清单,以发布到各个工作板上。我有一个包含所有网站属性的工作表,其中包括每个属性的唯一ID,以及提交最新帖子的时间(时间戳将到达的列)的列。待办事项列表是一个称为“发布任务”的选项卡,其中包含相同的唯一ID,以及一个复选框,用于将该帖子标记为已完成。
我正在使用onEdit触发器在“发布任务”工作表的A列中的单元格为“ true”时在“数据库”工作表(K列)上生成时间戳。但是,时间戳固定在相应触发器的行。我希望它们是相对的,基于唯一ID(触发器工作表中的列C和数据库工作表中的列B)的唯一ID的匹配(vlookup),因为“发布任务”表每天都在变化。
我正在使用以下脚本,但不知道如何将e.range.rowStart
更改为相对值并查找相应的值。有什么想法吗?
function onEdit(e) {
var sheetsToWatch= ['Posting Tasks', 'Database'
],
columnToWatch = 1,
columnToStamp = 11;
if (e.range.columnStart !== columnToWatch
|| sheetsToWatch.indexOf( e.source.getActiveSheet().getName() ) === -1
|| !e.value)
return;
e.source.getSheetByName('Database')
.getRange(e.range.rowStart, columnToStamp)
.setValue(new Date());
}
尝试一下:
function onEdit(e) {
e.source.toast('flag1');
var sh=e.range.getSheet();
var name=sh.getName();
if(name=='Posting Tasks' && e.range.columnStart==1 && e.value) {
e.source.toast('flag2');
var id=e.range.offset(0,2).getValue();
var tsh=e.source.getSheetByName('Database');
var idA=tsh.getRange(3,2,tsh.getLastRow()-2,1).getValues().map(function(r){return r[0]});
var row=idA.indexOf(id)+3;
var tsh=e.source.getSheetByName('Database').getRange(row,11).setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "dd/MM/yyyy HH:mm:ss"));
}
}
Andrew Karp修改:
var sh = e.source.getActiveSheet();
if (sh.getName() !== 'Posting Tasks' || e.range.columnStart !== 1 || e.range.rowStart < 3 || e.value !== 'TRUE') return;
e.range.offset(0, 0).clearContent() } }