问题标签 [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 回答
1784 浏览

google-apps-script - 谷歌脚本 e.values 错误

我查看了其他类似的帖子,并在正确设置触发器方面获得了一些帮助,但仍然有错误。
我试图自动发送一个 pdf 文档以通过电子邮件发送以响应谷歌应用程序中的表单提交。我使用了一个在网络上共享的脚本来开始并修复了一些不推荐使用的术语。我创建了一个嵌入占位符
的文档模板,并创建了一个表单来捕获数据。keyItems与表单关联的电子表格正在按计划捕获数据。我编辑了与电子表格相关的脚本,希望能完成提交表单所需的工作。触发器看起来正确设置为运行on form submit from the spreadsheet。我的问题是关于我反复得到的关于e.values未定义的错误。我以为我会将这些标记为e.values[0]当我声明变量时——即它们将基于它们在从电子表格字段中提取的数组中的顺序。对不起,啰嗦了。如果我将虚拟内容放在变量中,它会起作用并发送 pdf,因此实际机制可以正常工作,但我e.values无法正常工作。

这是我的脚本 // 完成证书

// 从 Google Docs 获取模板并命名

//当表单提交时从表单获取信息并设置为变量

//为提交者制作模板文档的临时工作副本

//打开临时文档

// 告诉脚本进入文档

//用提交表单中的数据替换文档中的占位符

//创建PDF

//发送邮件给收件人

//删除临时文件

0 投票
1 回答
194 浏览

google-apps-script - 事件对象不传递给脚本

我们有很多带有相关答案文件的谷歌表格。所有带有答案的电子表格文件都包含一个由触发器“发送表单”运行的 GScript

但只有一个表单停止运行此脚本。回答正确写入电子表格 ,但相关脚本似乎没有执行。

此脚本接收对象触发事件并发送带有电子表格最后一行的电子邮件

太奇怪了,我们在其他电子表格中有完全相同的脚本,而且效果很好!

此外,如果评论所有此脚本并仅留下GmailApp.sendEmail行并发送 GoogleForm ,则答案写入电子表格正确但可能不会触发“发送表单”,甚至可能不会执行一行

感谢帮助

PS如何调试这种需要 事件对象参数的脚本?

0 投票
1 回答
1339 浏览

google-apps-script - onChange 触发器未按预期工作

我有一个谷歌表,它有一个基于定时触发器的自动刷新 IMPORTXML 功能,我正在尝试编写一个脚本,当它检索到具有“帮助”消息类型的行时,它将自动通过电子邮件发送通知警报。

我根据我找到的一些示例编译了这个脚本。我已经对其进行了测试,它可以很好地使用带有 onEdit 可安装触发器的手动输入数据,但从我的测试(并基于研究)来看,我需要使用 onChange 触发器来让 IMPORTXML 触发脚本。

但是,当我将脚本设置为 onChange 可安装触发器时,该脚本似乎既不会使用 IMPORTXML 加载数据自动执行,也不会由我在工作表上手动输入。

我是否遇到了 Good Apps Script 的一些限制?这是我第一次使用它(和 JavaScript)

0 投票
2 回答
1839 浏览

javascript - 当尝试在 google sheet 脚本中使用 e.value 时,我得到 TypeError: Cannot read property "Values" from undefined。(第 7 行,文件“代码”)

这是一个两部分的问题:

  1. 我有带有链接表格的谷歌表格。提交表单后,我希望将表单中的响应复制到另一个谷歌表格,我打算在其中更改和重新格式化,然后通过电子邮件发送。下面的脚本是我目前编写的,它在FormSubmit 上设置了一个触发器。但是,我不断收到以下错误:

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

下面的代码:

  1. 我的问题的第二部分,即使我可以让代码工作,当在表单中跳过问题时,你会推荐什么 - 这不会改变 e.values 中的数组。使用最后一行作为问题的问题是我希望人们返回并编辑表单上的回复,然后重新提交,这意味着最后一行并不总是使用的行。

任何和所有的帮助表示赞赏。

0 投票
2 回答
815 浏览

google-apps-script - 可安装触发器的事件对象

因此,我正在尝试编写一个代码,当单元格中出现特定值时将发送电子邮件。为此,我使用了一个可安装的 OnEdit 触发器,因为简单的触发器无法访问 mailApp.sendEmail。可安装触发器用于以下功能:

我收到“e”未定义的错误。我想知道如何为可安装的 onEdit() 触发器引用事件对象。

我是一个绝对的 Javascript 菜鸟,所以请尽可能多地启发我,我的编码大师!提前致谢。

编辑:正如 Serge 所说,有很多错别字。VBA 编码的副作用!但我纠正了错别字并改变了我的做法:

我在Edit>>Current project's triggers的手动触发器上添加了这个。它在调试、发送电子邮件等时工作正常。但是,当我编辑工作表时,不会触发代码!我不确定这次我做错了什么。

0 投票
1 回答
78 浏览

javascript - 触发 onOpen 的函数停止工作

前段时间,我为我的一个电子表格编写了一个脚本,它使用可安装的触发器 onOpen 来启动 SpreadsheetApp.getUi 函数。

该函数如下所示:

这个菜单使用从电子表格触发的可安装触发器 onOpen 就像一个魅力。这些菜单项调用的函数使用 UserProperties,所以我确保它不是匿名运行的。

本周我注意到当我打开电子表格时菜单不再起作用 - 只有当我直接从脚本编辑器调用它时它才起作用。

我不知道如何解决这个问题 - 我没有对脚本进行任何更改,并检查以确保没有其他人干预它。到现在为止,它是同一个脚本。

我将非常感谢对此的帮助,至少可以说令人费解。

谢谢!

0 投票
2 回答
2875 浏览

google-apps-script - 获取所有 Google 脚本触发器并删除它们

有没有办法从谷歌脚本中的所有文档中获取(和更改/删除)所有触发器,就像我打开一样Script Editor -> Edit -> All your triggers

更新:

我添加了一些测试触发器并尝试循环所有电子表格文件,正如Pierre-Marie Richard所说:

.getUserTriggers()总是返回一个空数组。我读了这个问题,最后一个答案是“我们决定不对这个问题采取行动。触发器始终属于特定脚本,其他脚本无法访问。文档已澄清以明确这一点。”

原来做不到?

0 投票
1 回答
281 浏览

google-apps-script - GAS 不允许在 Team Drive 中以实用方式创建可安装触发器

我的公司一直在尝试使用 G Suite 将我们的流程转移到网上。出于某种原因,GAS 不允许我以可编程方式设置触发器并返回“异常:不允许操作”。请参见下面的屏幕截图 1-3。

[请求授权][1] //SO 不允许我发布两个以上的链接,这是一个屏幕截图,告诉您脚本需要授权并要求您选择一个帐户。

允许访问

不允许的操作

最简单的代码:

到目前为止,我的观察/尝试是:

  1. 这只发生在存储在团队云端硬盘中的文件(独立和绑定脚本)中,在我的云端硬盘中运行良好
  2. 我可以去 Edit -> Current Project's Triggers 并手动设置 On edit 触发器
  3. 我猜它与域授权有关,但找不到任何有用的信息
  4. 我与 Google Cloud Support 进行了交谈,但没有运气。他们的部分回应:

感谢您联系 G Suite 支持。我们了解到,您遇到的脚本不属于 gsuite.google.com/terms/user_features.html 中定义的核心 G Suite 服务套件的一部分

您遇到的问题目前不在我们提供的支持范围内,我们目前无法为您提供进一步的直接帮助。

由于这发生在团队驱动器中,我无法提供该文件的链接。

任何帮助将不胜感激。

提前致谢!

0 投票
0 回答
1006 浏览

google-apps-script - 谷歌脚本错误“您无权调用 toast”?

我的同事今天开始抱怨他们在我使用 Google 脚本自动化的日程安排表上遇到的问题。我已经有一段时间没有接触过这个电子表格的代码了,很惊讶地看到 Stackdriver 日志中充满了错误:

您无权在 check(Triggers:14) 的 evaluateJobCode(Job_Code:29) 的 createJobFolder(Job_Files:112) 调用 toast

Google 是否更改了有关权限的任何内容.toast()?没有新的权限请求,我无法触发。请指教。

这是我发现重现错误的快速方法:

  1. 将以下代码粘贴到脚本编辑器中:
  1. 运行它来确定权限
  2. 为其分配编辑事件
  3. 与另一个帐户共享并进行编辑以重现错误。
0 投票
1 回答
1382 浏览

google-apps-script - 如何使用 onChange 事件通过 Google Sheets Apps 脚本检测已删除的行

onChange事件"REMOVED_ROW"类型为SpreadsheetTriggerBuilder

但是,在文档中没有任何地方可以查看从事件中删除了哪些行。有没有办法获取与此事件一起删除的行号?