我正在尝试为我在Google表格中工作的公司开发一个库存表。在系统中,我想要是否选中C列中的复选框,它将在D列中显示“签出时间”,如果未选中,则将在E列中显示“签入时间”。但是,我想要检入项目后,检出的日期/时间单元格变回空白。
我已使用此自定义函数脚本创建了一个可以使用的TIMESTAMP函数,但是每次重新打开电子表格时,都会将所有日期重新计算为当前日期/时间。有什么办法使其非易失性?
function timestamp() {
return Date();
}
我需要一个可以执行上述操作的onedit触发器吗?
警告:我一点儿也不懂脚本。在过去的一周里,我一直在搜索论坛,但没有任何有效的方法。任何帮助将不胜感激:D
链接:https://docs.google.com/spreadsheets/d/1Oj6eustjvk9opXFNR2jHa0uMjPnKVXsvwOxFjb1t7-8/edit?usp=sharing
答案 0 :(得分:0)
这是我用于完全相同的场景的代码。 可能不是最有效的代码,但是它可以工作, 您可以根据需要进行调整
var timezone = "GMT-0400";
var timestamp_format = "MM/dd/yyyy HH:00"; // Timestamp Format.
function onEdit() {
var s = SpreadsheetApp.getActiveSheet();
if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
var r = s.getActiveCell(); //watches edited cell
if( r.getColumn() == 2 ) { //checks if edit is in column 2,
var nextCell = r.offset(0, 2);
if( r.getValue() === false)
nextCell.setValue(new Date()).setNumberFormat("dd-MM-yyyy HH:mm:ss");
if( r.getColumn() == 2 ) { //checks the column
var nextCell = r.offset(0, 1);
if( r.getValue() === true)
nextCell.setValue(new Date()).setNumberFormat("MM-dd-yyyy hh:mm:ss");
if( r.getValue() === false)
Browser.msgBox("Data refreshed.");
};
};
}
}