Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script GoogleSheets会触发更新表中的值,但不会保持旧值不变_Google Apps Script_Google Sheets_Triggers_Google Sheets Macros - Fatal编程技术网

Google apps script GoogleSheets会触发更新表中的值,但不会保持旧值不变

Google apps script GoogleSheets会触发更新表中的值,但不会保持旧值不变,google-apps-script,google-sheets,triggers,google-sheets-macros,Google Apps Script,Google Sheets,Triggers,Google Sheets Macros,我在Google Sheets中编程了一个宏,它显示一个表格,显示每天变化的某些数据的历史。宏每天都会在表中插入一行新的日期。这是使用触发器完成的。 问题:触发器还会更改前一天创建的行的值(我不是指日期,这很好,我是指类似于1,2,3,4,5,6的值)。因此,如果值发生变化,则每一行都包含相同的数据。但是,我想显示数据的历史记录。 那么我怎样才能防止这种情况呢 目前,我的评估列表是此文件中的第一张表,但如果我将其移动到第6个位置并在其上放置触发器,则值仍会写入第一张表,而不是评估列表,而是第一张

我在Google Sheets中编程了一个宏,它显示一个表格,显示每天变化的某些数据的历史。宏每天都会在表中插入一行新的日期。这是使用触发器完成的。 问题:触发器还会更改前一天创建的行的值(我不是指日期,这很好,我是指类似于1,2,3,4,5,6的值)。因此,如果值发生变化,则每一行都包含相同的数据。但是,我想显示数据的历史记录。 那么我怎样才能防止这种情况呢


目前,我的评估列表是此文件中的第一张表,但如果我将其移动到第6个位置并在其上放置触发器,则值仍会写入第一张表,而不是评估列表,而是第一张表(但我希望它们写入第6张表)。我必须在代码中输入什么才能在第6页(评估)中输入值

现在看起来是这样的:

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(新日期(),“dd/MM/yyyyy”)
中的实用程序来解决这一问题,如果要使用工作表
检查表中的实际值填充第16列,可以使用应用程序脚本中的实用程序
var today=Utilities.formatDate(new Date(),“dd/MM/yyyyy”)
解决此问题,单元格
BG8
并且您不希望在
BG8
更新时更新第16列中前几行的值-不要使用公式

改为修改

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


如果要使用工作表
检查表
、单元格
BG8
中的实际值填充第16列,并且不希望在
BG8
更新时更新第16列中前几行的值,请不要使用公式

改为修改

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



你能在你的Q中发布这个吗?问题是这些值来自另一个表,而另一个表中的值每天都在变化。当我激活触发器时,它会更改旧值,我希望安全地查看值的进度/历史。您是否考虑过将新数据写入新表?这应该可以解决您的困难。是的,我参考的数据在表清单中,我制作了一个新表,名为“评估”(这是我的历史/进度表),因为我只需要历史/进度表中的特定数据。但是当chklist中的一个值改变时,它会在我的历史表中改变表中已经存在的所有天,因此结果就是我根本没有历史。。。总是有新的数据,只是日期不同,这就是问题目前我的评估列表是此文件中的第一页,但如果我将其移动到第6个位置并在其上放置触发器,则值仍会写入第一页,而不是评估列表,而是第一页(但我希望它们位于第6页)。我必须在代码中输入什么才能在第6页(评估)中输入值?你能在Q中发布这个吗?所以问题是,值来自另一个表,而另一个表中的值每天都在变化。当我激活触发器时,它会更改旧值,我希望安全地查看值的进度/历史。您是否考虑过将新数据写入新表?这应该可以解决您的困难。是的,我参考的数据在表清单中,我制作了一个新表,名为“评估”(这是我的历史/进度表),因为我只需要历史/进度表中的特定数据。但是当chklist中的一个值改变时,它会在我的历史表中改变表中已经存在的所有天,因此结果就是我根本没有历史。。。总是有新的数据,只是日期不同,这就是问题目前我的评估列表是此文件中的第一页,但如果我将其移动到第6个位置并在其上放置触发器,则值仍会写入第一页,而不是评估列表,而是第一页(但我希望它们位于第6页)。我必须在代码中输入什么才能在第6页(评估)中输入值?您是说第16列中的值吗?您使用公式填充此列,因此如果所有行的值都更改,这是因为
BG8
的内容更改。这些内容是如何生成的?是的,第16列中的值会发生变化,但我希望它们保持不变。那么我该如何解决这个问题呢?现在我的表中有3个日期,我不想再更改日期(第15列)的值(第16列),当当天的值为1时,它们应保持在值1,而不应更改为值2,例如,当添加了具有新日期的新行,并且新日期的值更改为2时。您是在谈论第16列中的值吗?您使用公式填充此列,因此如果所有行的值都更改,这是因为
BG8
的内容更改。这些内容是如何生成的?是的,第16列中的值会发生变化,但我希望它们保持不变。那么我该如何解决这个问题呢?当我的表中有3个日期,我不想再更改日期(第15列)的值(第16列)时,它们应该在当天为1时保持在值1,不要更改为值2,例如,当添加了一个新日期的新行,并且新日期的值更改为2时。我尝试了这一点!它显示:无效或意外的tokenTypeError:SpreadsheetApp.getActive(…)。getSheetbyName不是一个函数抱歉,它是一个函数