Google Sheets 触发器更新 table 中的值,但不会保持旧值不变

Google Sheets Trigger updates values in a table, but does not leave old values unchanged

我在 Google 工作表中编写了一个宏,它显示 table 以显示每天变化的某些数据的历史记录。宏每天都会在 table 中插入一个带有新日期的新行。这是使用触发器完成的。 问题:触发器还会更改前一天创建的行的值(我不是指日期,它工作正常,我指的是像 1、2、3、4、5、6 这样的值)。因此,如果值发生变化,每一行都包含相同的数据。但是,我想显示数据的历史记录。 那么我该如何预防呢?

目前我的评估列表是这个文件中的第一个sheet,但是如果我把它移到第6个位置并在上面放一个触发器,值仍然写在第一个sheet ,不在评估列表中,而是在第一个 sheet 上(但我希望它们在第 6 个 sheet 上)。我必须在代码中输入什么才能在 6 日输入值 sheet(评估)?

现在看起来像这样:

function zeitStempelPerTriggerSetzen(){ 
  var tabellenblatt=SpreadsheetApp.getActiveSheet();
  var aktuellerZeitpunkt=new Date(); 
  var zeitStempelFormat="dd.mm.yyyy hh:mm:ss";
  tabellenblatt.getRange(tabellenblatt.getLastRow()+1,15).setValue(aktuellerZeitpunkt).setNumberFormat(zeitStempelFormat);   
  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setFormula('=\' checklist\'!BG8'); 

因此,例如第 1 行:2019-10-16 值为 1(这应该保持为 1,因为我想查看进度)但是当我激活触发器时,它会生成新的第 2 行:2019-10-17 值现在为 2,但第 1 行中的值也更改为 2。我希望第 1 行的值保持在 1。 我怎样才能避免这种情况?

假设您的宏正在分配值 =today(),您可以使用应用程序脚本中的实用程序解决此问题 var today = Utilities.formatDate(new Date(), "dd/MM/yyyy")

如果您想用 sheet checklist 单元格 BG8 中的实际值填充第 16 列,并且不希望第 16 列中前几行的值在以下时间更新BG8 更新 - 不要使用公式。

改为修改

  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setFormula('=\' checklist\'!BG8'); 

  var checklist=SpreadsheetApp.getActive().getSheetByName("checklist");
  var currentValue=checklist.getRange("BG8").getValue();
  tabellenblatt.getRange(tabellenblatt.getLastRow()+0,16).setValue(currentValue);