【问题标题】:Adding A Timestamp When New Row Inserted or Row Edited in Google Sheets在 Google 表格中插入新行或编辑行时添加时间戳
【发布时间】:2020-03-21 06:18:39
【问题描述】:

我有:

  • 自动接收新的 shopify 订单的 google sheet 通过扎皮尔
  • 订单作为新行插入,至少到目前为止是这样,但是 不知道以后会不会更新编辑 通过 zapier
  • 订单中的客户数据位于 A 到 JO 列中
  • 以下代码是一个容器绑定的简单触发器,可通过转到 google sheet 中的 Tools > Script Editor 访问

我想要:

  • 在 JP 列中为新行或已编辑行添加时间戳

我从这篇帖子"Want to create timestamp for time added and create unique incremental user ID. And also include a last changed column" 拼凑了以下代码。但是我有一个问题 - 当我尝试运行它时,我收到以下错误消息:

“TypeError:无法读取未定义的属性‘源’(第 6 行,文件“代码”)”

function onChange(e) {

var lastChangedTime = 276 //column JP

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = e.source.getActiveSheet

var now = new Date();

if (e.changeType == "INSERT_ROW") {


//set lastChangedTime when the row is created 
ss.getActiveSheet().getRange(ss.getActiveRange().getLastRow(), lastChangedTime, 1, 1).setValue(now);
   } 

  if (e.changeType == "EDIT") {

//set date in same row as edit happens, at fixed column  
ss.getActiveSheet().getRange(ss.getActiveRange().getLastRow(), lastChangedTime, 1, 1).setValue(new Date());

   }  
}

谁能通过查看这段代码来判断错误是什么?任何帮助将不胜感激!

编辑 1:

我想跟进并告诉大家这个问题是如何为我解决的。我以为我有一个问题,但实际上我有两个。

  1. 第一个问题是我试图从脚本编辑器中“运行”OnEdit(e) 函数来测试它,结果抛出了上述错误代码。正如 Chemi Adel 正确指出的那样,需要更改代码以启用此类测试。

  2. Mateo Randwolf 在 cmets 中正确识别的第二个问题是我没有正确安装触发器。要安装触发器,首先打开包含脚本的谷歌表。然后转到工具>脚本编辑器打开脚本编辑器。脚本编辑器应在 Web 浏览器的单独选项卡中打开。然后,在脚本编辑器选项卡中转到 Edit > Current Project's Triggers,这将打开一个新选项卡,显示当前项目的触发器。然后按下右下角的“添加触发器”按钮,将函数的参数设置为Function: OnChange, Deployment: Head(不知道这是什么表示但对我来说是唯一的选项)、选择事件源:从电子表格选择事件类型:编辑时。我能够在 Mateo Randwolf 链接到的文档中找到如何安装触发器。

【问题讨论】:

  • 嗨!你安装了这个触发器吗?如果您不确定它们是什么check this documetation page.
  • 嗨!太好了,我很高兴这对你有用。但是,您能否将您的 EDIT 1 正式化为对这篇文章的回答,以便遇到相同问题的每个人都可以轻松地看到解决方案?谢谢!

标签: google-apps-script google-sheets timestamp row


【解决方案1】:

编辑触发器给onChange一个对象作为参数event,单击运行而不定义event导致错误 创建与测试类似的对象结构event

function onChange(event) {

...Code

//Overrid e just for testing
event = {
  source:ss,
  changeType:'INSERT_ROW'
}

...Code
    
}

【讨论】:

    【解决方案2】:

    我想跟进并告诉大家这个问题是如何为我解决的。我以为我有一个问题,但实际上我有两个。

    • 第一个问题是我试图从脚本编辑器中“运行”OnEdit(e) 函数来测试它,这会抛出上述错误代码。正如 Chemi Adel 正确指出的那样,需要更改代码以启用此类测试。
    • Mateo Randwolf 在 cmets 中正确识别的第二个问题是我没有正确安装触发器。要安装触发器,首先打开包含脚本的谷歌表。然后转到工具>脚本编辑器打开脚本编辑器。脚本编辑器应在 Web 浏览器的单独选项卡中打开。然后,在脚本编辑器选项卡中转到 Edit > Current Project's Triggers,这将打开一个新选项卡,显示当前项目的触发器。然后按下右下角的“添加触发器”按钮,将函数的参数设置为Function: OnChange, Deployment: Head(不知道是什么意思但只是选项),选择事件源:从电子表格,然后选择事件类型:编辑时。我能够在 Mateo Randwolf 链接到的文档中找到如何安装触发器。

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 2019-02-03
      • 1970-01-01
      • 2016-02-15
      • 2020-12-29
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多