我有:
- 自动接收新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:
我想跟进并告诉大家这个问题是如何为我解决的。我以为我有一个问题,但实际上我有两个问题。
第一个问题是,我试图从脚本编辑器中"运行"OnEdit(e(函数来测试它,结果抛出了上面的错误代码。正如Chemi Adel正确指出的那样,代码需要更改才能进行这种类型的测试。
Mateo Randwolf在评论中正确指出的第二个问题是,我没有正确安装触发器。要安装触发器,首先打开包含脚本的谷歌工作表。然后转到工具>脚本编辑器打开脚本编辑器。脚本编辑器应在web浏览器的单独选项卡中打开。然后,在脚本编辑器选项卡中转到编辑>当前项目的触发器,它将打开一个显示当前项目触发器的新选项卡。然后按下右下角的"添加触发器"按钮,将函数的参数设置为函数:OnChange、部署:Head(我不知道这意味着什么,但这只是我的唯一选项(、Select Event Source:From Spreadsheet和Select 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链接的文档中找到了如何安装触发器