问题标签 [gs-installable-triggers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

google-apps-script - 基于 onedit / google sheet 的调用脚本

我正在寻找基于对特定工作表/单元格的编辑来启动脚本。

让我们说当工作表'脚本'单元格 A1 = '电话脚本'

此功能启动:

我最初将此分配给一个按钮,但我想离开它。

0 投票
1 回答
146 浏览

javascript - 我们在哪里可以找到 Google 对象的未记录属性

我知道自动完成有时可以帮助您找到 Google 对象的未引用方法,例如Sheets API v4,但我如何才能找到属性。

电子表格示例:

在此示例中,您会看到该属性columnStart,但我在文档中找不到它,但似乎很多人都在使用它。

另一点可能超出主题但很有趣,两者都e.range返回getDataRange一个Range对象,但一个似乎具有填充columnStart属性,而另一个则没有。

0 投票
1 回答
200 浏览

google-apps-script - FormSubmit = e.range的已安装触发器无法调用未定义的GetRowIndex方法?

所以我有一个安装的触发器:

对于提交的表格。我正在尝试获取填写在表单上的特定问题的答案,以替换不正确的版本表单(它删除了前导 0,但表单回复显示为 0)

我在同一个谷歌表上设置了另一个表单,但使用相同的过程在不同的表上设置了。完全相同,相同的变量“范围”和“行”

在我添加 'row' 和 'range' 之前,e 正在处理 console.log IDCF2 返回带有前导 0 的正确值。一旦我把 e.range 和 range.getSheet 放进去,它就坏了:(不知道为什么。如果有人能帮助我,我会很感激。建议/代码/来源。

我目前的错误是:

在此处输入图像描述

在此处输入图像描述

干杯,

0 投票
2 回答
273 浏览

events - e.source 和 e.range 缺失/不可用

我有一个基本的可安装触发器,我试图用来根据编辑工作表的时间发送电子邮件邀请(在我的情况下选择了一个特定的复选框)但是当我尝试从我的事件对象访问范围或源对象时[object Object] 和 undefined 分别。但是,由于能够获取 oldValue、value、triggerUid 和用户,我知道事件对象正在工作。

我能找到的对这个问题的唯一其他参考是这个问题here但是我对他们找到的权限“解决方案”没有运气。

任何帮助或见解将不胜感激。

0 投票
0 回答
1640 浏览

google-apps-script - Google Apps 脚本 onEdit() 触发器未执行

我已经实施了大约一年半的电子表格,它不断运行许多基于触发器的 GAS 功能来检查数据,根据该数据发送电子邮件,并更新员工日历。

所有时间驱动的触发器都在正常执行。我对他们没有意见。但是,电子表格驱动的触发器(onEdit、onChange)根本不起作用。我离开工作了两个星期的假期,我根本没有改变剧本。当我回来时,它不再起作用了。

我删除了触发器,重新创建了它,然后在 onEdit 和 onChange 之间切换;触发器仍然不会触发。编辑时触发的功能取决于事件是否正确执行。我测试在触发器之外运行了该函数,但它在我期望的地方(事件相关变量所在的地方)失败了,所以这并不奇怪。

据我所知,电子表格驱动的触发器根本不会触发。有谁知道谷歌的任何问题,电子表格驱动的触发器是否适用于你们中的任何人?据我所知,触发器刚刚停止工作。

如果我在脚本的 onEdit() 函数中显式嵌套我的函数,它将执行,如果我只是创建一个触发器则不会执行,但是它会抛出一个错误,指出脚本没有执行 MailApp.sendEmail 的权限() 即使该应用程序已被授权以我的身份发送电子邮件。

更有趣的是,使用时间驱动触发器执行的功能仍然能够发送电子邮件和更新我的日历。

似乎电子表格驱动的触发器已经不再一起工作了。

为了清楚起见,我没有将我的函数命名为 onEdit 或 onChange 的错误。

0 投票
2 回答
411 浏览

google-apps-script - 如何使用 G-Suite Developer Hub 创建带有“来自电子表格”事件源的独立 onEdit(e) 触发器?

我正在尝试通过 Google App 脚本创建一个 onEdit(e) 触发器,但是,当转到编辑 -> 当前项目触发器 -> 添加触发器 -> “事件源”时,我没有选择“从电子表格”的选项。

我只是喜欢在对 Google 表格上的单元格进行编辑时执行此功能。

我已经尝试通过 G-Suite 开发者中心创建可安装触发器 (myOwnEditTrigger),但是,我被迫选择“从日历”或“时间驱动”事件源,这两者都对我的项目没有帮助。

我也试图避免通过(.gs)代码对触发器进行编程。如果这是我唯一的选择,那么我在哪里可以找到这段代码的内容?

我期望来自 onEdit(e) 的参数“e”的返回值返回一个包含编辑数据的电子表格,如本页https://developers.google.com/apps-script/guides/上的“编辑”下所述触发器/事件

0 投票
0 回答
628 浏览

google-apps-script - Google 应用程序脚本表单 - e.response 未定义

我设置了一个与电子表格绑定的简单 Google 表单,并添加了一个可安装的触发器,当用户提交表单时它会调用 onFormSubmit。

这是 onFormSubmit 代码:

这是日志中的内容:

为什么 e.response 未定义?

浏览其他帖子似乎指向一个可能的应用程序脚本错误,但我还没有找到任何明确的方法,也不是我找到的解决方法。

谢谢,马克斯

0 投票
2 回答
3874 浏览

google-apps-script - 如何使用 Google Apps 脚本动态更改 Google 表单上的现有文本项值

我有一个现有的 Google 表单,其中有一个 TextItem,标题为“这是在哪个位置执行的?”。

在此处输入图像描述

每当加载(打开)表单时,我都需要为这个现有的文本框设置一个位置值(loc)并将其显示给用户。

我已经设置了 openForm 触发器,它允许在每个表单加载时运行 populateMemberIds 函数。同样,我需要用位置值 (loc) 更改文本项的“您的答案”部分的值。

我将不胜感激任何帮助。

0 投票
0 回答
668 浏览

google-apps-script - 使用“ScriptApp.newTrigger”创建的可安装触发器必须在运行之前重新保存

我有一个费用表,我为每个相关用户复制到 Google Drive 文件夹中。工作表的每个副本都需要一个可安装的触发器,该触发器调用一个函数以在最后一行数据被编辑时插入额外的行。这些是使用 onEdit 事件触发的。手动创建(通过“ Edit Current Project's triggers”)时,可安装的触发器工作正常。

为了简化设置新用户的过程,我编写了触发器的创建脚本。虽然脚本创建了触发器并且它看起来与手动创建的完全相同,但它只有在我手动打开触发器、重新选择要触发的函数并重新保存时才有效。

我可以在运行创建脚本时确认我是所有者。

我看到的行为向我表明,我的脚本中的函数名称有问题,但对我来说一切都很好。我真的很感激这方面的一些帮助....

完整代码在这里....

0 投票
1 回答
399 浏览

events - onSubmit 事件不起作用消息:TypeError:无法从未定义中读取属性“值”

我有一个谷歌表单只包含一个问题 表单布局

我想更新 onSubmit 事件中的确认消息。这是我的代码,

我的部署步骤是

  1. 保存代码
  2. 添加触发器(要运行的函数:onsubmit1(),选择应该运行的部署:HEAD,选择事件源:从 FORM,选择事件类型:在表单提交时,失败通知设置:每天通知我)
  3. 运行 onsubmit1

然后
显示错误消息

TypeError:无法从未定义中读取属性“值”。(第 3 行,文件“onsubmit”)

并且部署失败。

部署错误消息

如何从当前响应中检索值?

//更新我已将代码修改为

该函数可以在捕获事件的情况下运行。但是,正如前面提到的,不能以这种方式设置确认消息,因为 namevar 返回了上次提交的响应。

可以在 如何使用 Apps Script 在 google 表单中根据表单响应设置确认消息中找到说明?