在sheet1上有一个提交按钮,该按钮运行脚本并将数据移到sheet2中。
我正在为移动“打上时间戳”(在某些情况下为防止覆盖,并且没有意义的时间戳),但是使用当前脚本是这样的
问题(1):仅当我在sheet2上手动进行编辑(= sheet2处于活动状态)时,才会进行onEdit。
已解决! (请参阅评论)问题(2):onEdit不会仅限于sheet2,并且也会在sheet1上发生。
function onEdit() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
if( sheet.getName() == "sheet2" ) {
var activecell = sheet.getActiveCell();
if( activecell.getColumn() == 2 ) {
var pastecell = activecell.offset(0, -1);
if( pastecell.getValue() === '' & activecell.getValue() != '' )
pastecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');
}
}
}
有人知道两个可以解决这个问题吗?
非常感谢您的帮助和见解!
答案 0 :(得分:0)
因此,在阅读了以下内容的♀️和@tehhowch洞察力之后,
https://developers.google.com/apps-script/guides/triggers/
脚本执行和API请求不会导致触发器运行。对于 例如,调用Range.setValue()编辑单元格不会导致 电子表格的onEdit触发器即可运行。
只需在原始移动功能中运行时间戳即可解决,
function move() {
var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var source_range = source.getRange(3, 15, 1, 6).getValues();
var target = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
var target_range = target.getRange(target.getLastRow() + 1, 2, 1, 6);
target_range.setValues(source_range);
var datecell = target_range.offset(0, -1, 1, 1);
datecell.setValue(new Date()).setNumberFormat('YY-MM-DD HH:mm:ss');
var clearsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
clearsheet.getRange("J3:K4").clearContent();
clearsheet.getRange("B8:B25").clearContent();
clearsheet.getRange("H8:H9").clearContent();
clearsheet.getRange("H11").clearContent();
clearsheet.getRange("O7:P16").clearContent();
}
有时候,您必须大声思考。希望这对其他人有帮助。