使用 Google App Script 从不同帐户发送电子邮件

2023-12-22

我已经生成了代码应用程序脚本 https://stackoverflow.com/questions/38231665/changing-the-owner-of-google-spreadsheet-for-sending-emails-with-app-script/38236937#38236937为了在用户更改谷歌电子表格中的某些值时自动发送电子邮件,这工作正常。

现在我正在将我的谷歌电子表格和应用程序脚本分享给另外两个人(例如:PersonA,PersonB)。因此,我希望任何人在谷歌电子表格上更改任何内容都将在他/她自己的帐户下发送电子邮件。例如:[我们所有人都需要在谷歌电子表格本身内进行编辑,而不需要转到“当前网络应用程序网址”,(谢谢卡梅伦·罗伯茨 https://stackoverflow.com/users/1666569/cameron-roberts澄清一下]如果PersonA更改了任何内容,那么将在PersonA的帐户下发送一封电子邮件,如果PersonB更改任何内容,则会在PersonB的帐户下发送一封电子邮件。

我根据建议做了一些事情用户2970721 https://stackoverflow.com/users/2970721/user2970721 and 卡梅伦·罗伯茨 https://stackoverflow.com/users/1666569/cameron-roberts。我将“部署Web应用程序”调整为“访问Web应用程序的用户”。例如:

我还要求 PersonA 和 Person 在他们的帐户下执行相同的操作,并确保他们至少触发了一次脚本。例如:

我的问题是,在我完成上述所有这些操作后,无论谁在谷歌电子表格上更改任何内容,电子邮件总是从 PersonB 的帐户发送(我最好的猜测是我搞砸了一些东西,而 PersonB 是最后一个触发脚本的人) )。

我、PersonA 和 PersonB 的“项目版本”是否需要不同,或者我需要更改其他什么内容?任何帮助将不胜感激!


首先,您的项目版本不需要对每个用户都不同。

我假设您正在使用 On Change 事件,而不是网络应用程序。如果是这种情况,您应该完全禁用 Web 应用程序,因为不需要它。

当 PersonA 创建“更改时”触发器时,任何用户(例如 PersonA 或 PersonB)编辑电子表格时都会触发该触发器。当它被触发时,代码将作为 PersonA 执行,因为 PersonA 创建了触发器。因此,电子邮件将从 PersonA 的帐户发送。

对于您描述的场景,PersonA 和 PersonB 都创建了 OnChange 触发器并授权了脚本。我希望从创建触发器的两个帐户发送电子邮件。

要从进行编辑的帐户仅发送一封电子邮件,我认为您需要进行检查以确定进行编辑的用户是否与脚本运行权限下的用户匹配。我以前从未这样做过,并且文档并没有真正明确说明是否可能。

尝试检查更改事件中包含的用户对象(例如 e.user),并查看该电子邮件地址是否反映了进行编辑的不同用户。

如果是,您可以将其与有效用户进行比较,如果匹配则发送电子邮件。

https://developers.google.com/apps-script/reference/base/user https://developers.google.com/apps-script/reference/base/user

https://developers.google.com/apps-script/reference/base/session#getEffectiveUser() https://developers.google.com/apps-script/reference/base/session#getEffectiveUser()

最后,仅在电子邮件主题中包含进行编辑的人员的地址,然后从一个帐户发送所有电子邮件可能会更简单。这样您就知道谁进行了编辑,但不需要让每个用户都创建触发器并进行所有额外检查。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Google App Script 从不同帐户发送电子邮件 的相关文章

随机推荐

  • 如何获取使用顶级语句的 C# 9 程序的 Reflection TypeInfo?

    假设我有一个用 C 9 编写的简单脚本 如下所示 using System using System IO What to put in the var exeFolder Path GetDirectoryName typeof Asse
  • 如何突出显示 mat-table Angular 7 中新插入的行

    我有一个 mat table 在其中显示行列表 我有一个添加新按钮 用户可以通过该按钮手动添加行 工作堆栈闪电战 https stackblitz com edit angular axjzov 8zmcnp https stackblit
  • 使用 string.format 在字符串中插入空格

    我之前一直使用 C String Format 来格式化数字 在本例中我只是想插入一个空格 String Format 0 123456 output 123 456 在这种特殊情况下 数字是一个字符串 我的第一个想法是简单地将其解析为一个
  • 我的静态搜索有问题吗?

    当我尝试实现 QuiesenceSearch 时 我的基于 negamax 的人工智能不断出现奇怪的行为 我基于来自的伪代码here https chessprogramming wikispaces com Quiescence Sear
  • 有什么方法可以识别PHP中的F5刷新吗?

    有什么方法可以识别是否有人使用 PHP 刷新了当前页面而不是从其他地方到达 我只能访问当前页面的代码 因此无法从其他页面传递任何内容进行检查 您的问题的标题表明您正在专门寻找一种方法来检测何时使用 F5 键刷新页面 如果是这种情况 您肯定需
  • 为什么 pandas groupby().transform() 需要唯一索引?

    我想使用 groupby transform 对 已排序 数据集中的每个记录块进行自定义 累积 转换 除非我确保我有唯一的密钥 否则它不起作用 为什么 这是一个玩具示例 df pd DataFrame 1 1 1 2 2 3 3 4 3 5
  • 如何在不冒 OOM 杀手风险的情况下 mmap() 大文件?

    我有一个嵌入式 ARM Linux 机器 其 RAM 量有限 512MB 且没有交换空间 我需要在其上创建并操作一个相当大的文件 200MB 将整个文件加载到 RAM 中 修改 RAM 中的内容 然后再次将其写回有时会调用 OOM kill
  • 如何更改 xcode 4 中的文件路径?

    我有一个项目 其中有几个文件是红色的 在 XCode 3 中 我曾经单击文件 获取信息 并更改路径 但我不知道如何在新的 XCode 4 中执行此操作 单击您的文件 然后打开右侧窗格 右上角有一个按钮 在那里您将看到身份和类型 在位置下拉菜
  • 从 Java 中创建 SQL 批量更新

    我想更新 mySql 数据库中特定列上的每一行 目前我正在使用java sql PreparedStatement对于每一行并在 for 循环中迭代 我想知道在 Java 编程方面是否还有其他替代方案可以减少时间和资源消耗 比如批量执行准备
  • 内容安全策略指令“script-src”的源列表包含 safari Angular 5 中的无效源

    我已经在 Angular 5 中实现了 google recapthca 它对所有浏览器都运行良好 但在 safari 中我收到以下错误 内容安全策略指令 script src 的源列表包含无效源 strict dynamic 它将被忽略
  • 使用 jq 创建 JSON 文件

    我尝试通过执行以下命令来创建 JSON 文件 jq arg greeting world hello greeting gt file json 该命令在没有任何输入的情况下卡住了 尽管 jq n arg greeting world he
  • 如何从 Deno 运行任意 shell 命令?

    我想从 Deno 运行任意 bash 命令 就像使用child process在节点中 这在 Deno 中可能吗 Deno 1 28 0 添加了一个新的 API 来运行 shell 命令 Deno Command https deno la
  • 在 Weblogic Server 中使用 JAXB 解组

    具体规格 服务器 由客户修复的Weblogic 9 2 由客户修复的 wsdl 和 xsd 文件定义的 Web 服务 不允许修改 Hi 在项目中我们需要开发一个邮件系统 这必须与网络服务共同工作 我们创建一个 Bean 它从非根 xsd 元
  • 在 javascript 中检测同一应用程序打开的多个 chrome 选项卡

    有没有办法检测同一应用程序是否打开了多个浏览器选项卡 假设我有 www test com 并且我打开了该网站的 4 个选项卡 有没有办法检测 JavaScript 中打开的多个选项卡 你可以用我的sysend js 库 https gith
  • 获得 Vaadin 树物品的兄弟姐妹?

    我需要获取 Vaadin 树中特定项目的兄弟姐妹 我可以做这个 Object itemId event getItemId Object parentId tree getParent itemId Collection siblings
  • Haskell初学者,尝试输出一个列表

    我想这里的每个人都已经看过其中一个 或至少是类似的 问题 但我仍然需要问 因为我在任何地方都找不到这个问题的答案 主要是因为我不知道我到底应该看什么 为了 我写了这个小脚本 其中 printTriangle 应该打印出帕斯卡三角形 fac
  • 无法消除 Firefox 链接中的虚线轮廓?

    我有一个完整的 imgs 列表 ul li a href img src test png li gt a li li a href img src test png li gt a li li a href img src test pn
  • 单击按钮时获取 asyncfileupload 控件文件名

    我在我的 asp net 页面上使用 ajaxfileupload 控件 上传图像后 我调用 uploadcomplete 方法将图像保存在磁盘上并使用以下 JavaScript 在图像控件中显示 string fileName Guid
  • GCC LD NOLOAD 链接器部分生成可加载段

    我正在开发 Arm 裸机应用程序 并且我用以下标记标记了一些部分NOLOAD 根据中的解释了解嵌入式软件中的链接描述文件 NOLOAD 部分 https stackoverflow com q 57181652 6271889 我期望生成的
  • 使用 Google App Script 从不同帐户发送电子邮件

    我已经生成了代码应用程序脚本 https stackoverflow com questions 38231665 changing the owner of google spreadsheet for sending emails wi