我提前为这个问题道歉——这个问题看起来很基本,但我自己也弄不清楚,也找不到任何能回答我问题的东西。
我的背景
我通常习惯于使用excel,直到最近,我把工作转到了一个使用谷歌文档的部门。我对Javascript的了解是非常基础的,这是基于我在过去4周尝试编写一些基本代码时遇到的东西。
我正在处理的工作表的背景
我们有一大张带有相关信息的名字表,输入到每一行。因此,1行=1人。每行从A列到T列。
我的老板希望保留任何历史数据,非常像数据库。我知道电子表格不是最好的地方,但我对数据库软件的了解不如Javascript。作为一个临时解决方案,我所做的是创建一个额外的列(U列:存档),当输入"是"时,它会将整行剪切并粘贴到名为Archive的工作表中。然后,它还会删除留下的空行,保持表格的整洁。
请参阅此处的代码(出于示例目的,将工作表名称更改为工作表1):
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet1" && r.getColumn() == 21 && r.getValue() == "yes") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Archive");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
我现在想做什么(以及我需要代码做什么)
我的同事们希望能够查看归档表,并一目了然地看到哪个单元格被更改了。我们认为最好和最简单的方法是突出显示单元格。
但是,在归档行之前,我们必须复制它,在下面插入一行并粘贴复制的数据。然后,我们更改有错误数据的单元格,然后用旧数据归档行(这样我们就可以记录工作表生命周期中任何时候保存的所有数据)。在T列中,在归档之前,我们还输入了今天的日期,这样我们就可以知道信息是何时更改的。
所以-我需要一个代码,可以更改正在编辑的单元格下面的单元格(这将包含旧数据),但不能更改列T或U(所以a:S)。
就像我之前说的,我为这种笨拙的做事方式和问初学者的问题道歉!
非常感谢。
在谷歌电子表格中构建的修订历史不是解决问题的更好方案吗?https://support.google.com/docs/answer/190843?hl=en.