在谷歌工作表中插入新行或编辑行时添加时间戳



我有:

  • 自动接收新shopify订单的谷歌表单通过zapier
  • 订单是作为新行插入的,至少到目前为止是这样,但是我不知道他们将来是否会更新由zapier
  • 订单中的客户数据在A至JO列中
  • 下面的代码是一个绑定到容器的简单触发器,可以访问谷歌工作表中的Tools>Script Editor

我想要:

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

我从这篇文章中拼凑出了以下代码"希望为添加的时间创建时间戳,并创建唯一的增量用户ID。还包括最后更改的列"。然而,我有一个问题——当我尝试运行此程序时,我收到以下错误消息:

"TypeError:无法读取未定义的属性"source"(第6行,文件"Code"(">

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在评论中正确指出的第二个问题是,我没有正确安装触发器。要安装触发器,首先打开包含脚本的谷歌工作表。然后转到工具>脚本编辑器打开脚本编辑器。脚本编辑器应在web浏览器的单独选项卡中打开。然后,在脚本编辑器选项卡中转到编辑>当前项目的触发器,它将打开一个显示当前项目触发器的新选项卡。然后按下右下角的"添加触发器"按钮,将函数的参数设置为函数:OnChange部署:Head(我不知道这意味着什么,但这只是我的唯一选项(、Select Event Source:From SpreadsheetSelect Event Type:On Edit。我能够在Mateo Randwolf链接的文档中找到如何安装触发器。

Edit触发器将对象作为参数event赋予onChange,单击run而不定义event导致错误创建与测试event类似的对象结构

function onChange(event) {
...Code
//Overrid e just for testing
event = {
source:ss,
changeType:'INSERT_ROW'
}
...Code

}

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

  • 第一个问题是,我试图从脚本编辑器中"运行"OnEdit(e(函数来测试它,结果抛出了上面的错误代码。正如Chemi Adel正确指出的那样,代码需要更改才能进行这种类型的测试
  • Mateo Randwolf在评论中正确指出的第二个问题是,我没有正确安装触发器。要安装触发器,首先打开包含脚本的谷歌工作表。然后转到工具>脚本编辑器打开脚本编辑器。脚本编辑器应在web浏览器的单独选项卡中打开。然后,在脚本编辑器选项卡中转到编辑>当前项目的触发器,它将打开一个显示当前项目触发器的新选项卡。然后按下右下角的"添加触发器">按钮,将函数的参数设置为函数:OnChange、部署:Head(我不知道这意味着什么,但这对我来说只是一个选项(、选择事件源:从电子表格和选择事件类型:编辑。我在Mateo Randwolf链接的文档中找到了如何安装触发器

最新更新