在 Google 表格中实施两步批准电子邮件通知系统

在 Google 表格中实施两步批准电子邮件通知系统
Google Sheets

在电子表格工作流程中自动发出批准通知

在当今快节奏的业务环境中,审批流程的效率可以显着影响运营工作流程。由于 Google 表格的灵活性和可访问性,许多组织依靠 Google 表格来管理审批请求等任务。在为这些流程实施自动化系统时,特别是当涉及两步审批机制时,会出现一个常见的挑战。一旦获得初步和最终批准,并且请求状态转换为“已批准”,该系统就需要向 IT 部门发送自动电子邮件。

然而,通过 Google Apps 脚本自动化此过程提出了特殊的挑战。对于启动电子邮件发送至关重要的内置“onEdit”触发器不会激活以编程方式进行的更改,仅适用于通过直接用户交互进行的更改。在通过脚本执行从“待处理”到“已批准”的状态更新的情况下,此限制造成了重大障碍。本介绍为探索将自动电子邮件通知无缝集成到基于 Google 表格的审批工作流程中的解决方案奠定了基础,从而确保及时沟通和流程效率。

命令 描述
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Approvals") 访问活动电子表格并检索名为“Approvals”的工作表。
getDataRange() 获取工作表中的所有数据作为范围。
getValues() 以二维数组形式返回范围内单元格的值。
MailApp.sendEmail(email, subject, body) 发送具有指定收件人、主题和正文的电子邮件。
sheet.getRange(i + 1, emailSentColumn + 1).setValue("sent") 将特定单元格的值设置为“已发送”,表示电子邮件已发送。
google.script.run 从网络应用程序调用 Google Apps 脚本函数。
withSuccessHandler(function()) 指定 google.script.run 调用成功时要运行的函数。
withFailureHandler(function(err)) 指定在 google.script.run 调用失败时运行的函数,并将错误作为参数传递。
updateStatusInSheet(approvalId, status) 自定义 Google Apps 脚本函数(未在代码片段中显示),用于更新电子表格中审批请求的状态。

破译自动电子邮件机制

我为 Google Sheets 设计的自动电子邮件触发系统主要旨在简化组织内部的审批流程,特别是对于需要多个审批者同意才能继续的情况。该解决方案的第一部分是用 Google Apps 脚本编写的,直接与记录批准状态的 Google Sheets 交互。该脚本检查整个“批准”表中批准者 1 和批准者 2 均将其批准标记为“已批准”的行。这一点至关重要,因为该脚本仅在获得两项批准后才会执行,这反映了完全授权的请求。为了实现这一点,脚本会迭代每一行,检查为每个审批者的决策指定的特定列以及请求的总体状态。当一行满足条件时(两个审批者都已批准,并且状态设置为“已批准”),脚本会触发向 IT 部门发送电子邮件。此电子邮件通知是使用 MailApp 服务发送的,该服务是 Google Apps 脚本的一部分,可促进直接从脚本发送电子邮件。它确保 IT 部门及时获悉已批准的请求,从而能够迅速采取行动。

通过 Web 应用程序更新审批状态的机制充当自动电子邮件系统的前端对应部分。该组件特别重要,因为 Google 表格中的“onEdit”触发器仅响应手动编辑,而不响应编程更改。为了规避此限制,一个简单的 Web 界面允许用户更新批准请求的状态。在进行交互时,例如单击按钮将请求标记为“已批准”,网络应用程序会通过“google.script.run”命令调用 Google Apps 脚本函数。此命令功能强大,因为它使脚本能够根据从 Web 界面接收到的输入在 Google Sheet 中执行操作,从而有效地模仿手动编辑。然后,该脚本可以继续检查更改并按设计发送电子邮件,从而弥补“onEdit”触发器的限制造成的差距。这种双组件解决方案可确保审批流程高效且适应性强,满足工作流程中手动和自动干预的需求。

简化电子表格应用程序审批阶段的电子邮件通知

用于后端处理的 Google Apps 脚本

function checkApprovalsAndSendEmail() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Approvals");
  var range = sheet.getDataRange();
  var values = range.getValues();
  var emailSentColumn = 5; // Assuming the fifth column tracks email sending status
  var approver1Column = 2; // Column for approver 1's status
  var approver2Column = 3; // Column for approver 2's status
  var statusColumn = 4; // Column for the overall status
  for (var i = 1; i < values.length; i++) {
    var row = values[i];
    if (row[statusColumn] == "approved" && row[emailSentColumn] != "sent") {
      if (row[approver1Column] == "approved" && row[approver2Column] == "approved") {
        var email = "it@domain.com";
        var subject = "Approval Request Completed";
        var body = "The approval request for " + row[0] + " has been fully approved.";
        MailApp.sendEmail(email, subject, body);
        sheet.getRange(i + 1, emailSentColumn + 1).setValue("sent");
      }
    }
  }
}

通过 Web 应用程序自动更新批准状态

用于前端交互的 HTML 和 JavaScript

<!DOCTYPE html>
<html>
<head>
<title>Approval Status Updater</title>
</head>
<body>
<script>
function updateApprovalStatus(approvalId, status) {
  google.script.run
    .withSuccessHandler(function() {
      alert('Status updated successfully.');
    })
    .withFailureHandler(function(err) {
      alert('Failed to update status: ' + err.message);
    })
    .updateStatusInSheet(approvalId, status);
}
</script>
<input type="button" value="Update Status" onclick="updateApprovalStatus('123', 'approved');" />
</body>
</html>

通过电子表格自动化提高工作流程效率

作为两步审批流程的一部分,在 Google 表格中自动发送电子邮件通知的概念引入了一种简化组织工作流程的复杂方法。传统上,审批顺序中的手动干预一直是主要内容,需要人类的行动来推动流程向前发展。然而,通过利用 Google Apps 脚本,我们转向一种最小化此类干预的模型,从而提高效率并减少错误。这种转变不仅加速了整体审批流程,而且还确保在正确的时刻发送通知,特别是当审批双方都批准了请求时,以状态转换为“已批准”为标志。

这种方法强调了电子表格中以编程方式管理状态更新的重要性,这种方法避开了“onEdit”触发器的限制。通过使用监听状态变化并相应发送电子邮件通知的自定义脚本,组织可以规避手动瓶颈,从而实现操作工作流程的关键组件的自动化。这种方法论枢纽不仅改进了审批流程,还引入了以前通过手动流程无法实现的可扩展性和适应性水平,为更加动态和响应更快的工作流程管理系统打开了大门。

有关电子表格自动化的常见问题

  1. 问题: 自动化流程是否适用于任何 Google 表格文档?
  2. 回答: 是的,只要针对特定​​文档的结构正确配置了脚本,自动化就可以应用于任何 Google 表格文档。
  3. 问题: 实现这些脚本是否需要编码知识?
  4. 回答: JavaScript 中的基本编码知识有利于自定义和实现 Google Apps 脚本中的脚本。
  5. 问题: 自动电子邮件触发器可以同时处理多个批准请求吗?
  6. 回答: 是的,该脚本可以通过迭代数据行并检查每个请求的批准状态来处理多个请求。
  7. 问题: 自动化流程的安全性如何?
  8. 回答: 该过程与任何 Google 表格和 Google Apps 脚本操作一样安全,利用 Google 的标准安全协议来保护数据。
  9. 问题: 该脚本可以向多个电子邮件地址发送通知吗?
  10. 回答: 是的,可以通过调整 MailApp.sendEmail 函数中的收件人参数来修改脚本以将通知发送到多个电子邮件地址。

总结见解和前进步骤

Google Sheets 中自动电子邮件触发器的两步审批流程的探索揭示了对简化此类工作流程的局限性和潜在解决方案的重要见解。默认的 onEdit 触发器无法识别编程更改,因此需要创造性的脚本方法来确保仅在完全确认批准时才发送通知。这种情况强调了定制 Google Apps 脚本解决方案对于弥合 Google 表格本机功能差距的重要性,从而能够开发更加动态和响应迅速的审批流程。通过利用 Google Apps 脚本创建专门的触发器和功能,组织可以提高运营效率和沟通流程,确保关键利益相关者在审批阶段完成后及时得到通知。讨论强调了面对平台限制时适应性的必要性,鼓励在自动化系统中采取主动解决问题的方法。