Google apps script 谷歌表单更改时间戳

Google apps script 谷歌表单更改时间戳,google-apps-script,google-sheets,timestamp,Google Apps Script,Google Sheets,Timestamp,我试图实现的是非常简单的,但是我对GoogleSheet脚本编辑器非常不舒服 我希望在活动工作表中发生更改时更新某个单元格中的日期 function createOnChangeTrigger(){ const ss = SpreadsheetApp.getActive(); ScriptApp.newTrigger("updateCell") .forSpreadsheet(ss) .onChange() .create(); } function u

我试图实现的是非常简单的,但是我对GoogleSheet脚本编辑器非常不舒服

我希望在活动工作表中发生更改时更新某个单元格中的日期

function createOnChangeTrigger(){
  const ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger("updateCell")
  .forSpreadsheet(ss)
  .onChange()
  .create();
}

function updateCell(){
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getActiveSheet();  
  sh.getRange('B1').setValue(new Date());
}
这就是我目前得到的:

//Timestamp on change
function timestampOnChange() {
  getActiveCell().setValue(new Date());
}
但是,即使这样也会返回错误消息:/

解释:
  • 您需要创建特定事件的触发器 该函数将在电子表格运行时更新活动工作表的特定单元格 更改内容结构

  • updateCell()
    函数用当前值更新B1的值 活动工作表的时间戳

  • 我建议您更新特定的表,而不是活动的 通过使用以下方式创建工作表:

    const sh = ss.getSheetByName('Sheet1');
    
    而不是:

    const sh = ss.getActiveSheet();
    

解决方案:
  • 更详细地说,
    createOnChangeTrigger()
    函数将创建 存在时将执行的
    onChange()
    触发器 是电子表格文件和活动工作表的内容或结构的更改

    function createOnChangeTrigger(){
      const ss = SpreadsheetApp.getActive();
      ScriptApp.newTrigger("updateCell")
      .forSpreadsheet(ss)
      .onChange()
      .create();
    }
    
    function updateCell(){
      const ss = SpreadsheetApp.getActive();
      const sh = ss.getActiveSheet();  
      sh.getRange('B1').setValue(new Date());
    }
    

说明: 在脚本编辑器中复制/粘贴这两个函数,并仅执行一次
createOnChangeTrigger()


参考资料:
从问题中:

但是,即使这样,也会返回错误消息

上面的代码返回一个错误,因为没有名为
getActiveCell()
的内置Google Apps脚本函数。要获取活动单元格,可以使用

SpreadsheetApp.getCurrentCell()

或者,如果您使用编辑事件对象(假设它是分配给
e
),您可以使用
e.range

值得注意的是,如果在活动单元格上使用
setValue(new Date())
,则在该单元格上输入的内容将被覆盖


在堆栈溢出的姊妹网站Web应用程序上,Google表单中有很多关于时间戳的Q/a,实际上,它们有标签-->。到目前为止,这个标签有102个问题。

似乎是一个很好的解决方案,但它对我不起作用。它也不会返回错误消息。当我执行它时,它会说“正在加载…”大约2秒钟,当你将鼠标悬停在字段上方时,会出现一条错误消息“错误[新行]正在加载数据…”。在这2秒钟之后,它只是一个空单元格,没有任何关于如何修复它的提示…@Robin33共享你的工作表副本。我不知道你为什么会出错。我无法复制它。您确定只执行了
createOnChangeTrigger()
?牢房感谢您的帮助,非常感谢(我们在工作表上进行了沟通,工作表现在将是只读的。请定义您所指的更改类型?写入/编辑/删除某些内容或对电子表格结构的更改,例如插入/删除行?指定您所指的更改很重要,因为检测不同更改的触发器是不同的e应更新日期
SpreadsheetApp.getActiveRange()