Google スプレッドシートに 2 段階承認のメール通知システムを実装する

Google スプレッドシートに 2 段階承認のメール通知システムを実装する
Google Sheets

スプレッドシートワークフローでの承認通知の自動化

今日のペースの速いビジネス環境では、承認プロセスの効率が運用ワークフローに大きな影響を与える可能性があります。多くの組織は、その柔軟性とアクセシビリティにより、承認リクエストなどのタスクの管理に Google スプレッドシートを利用しています。これらのプロセスの自動化システムを実装する場合、特に 2 段階の承認メカニズムが含まれる場合に、共通の課題が発生します。このシステムでは、申請ステータスが「承認」に移行することを条件として、仮承認と最終承認の両方が許可された後、IT 部門に自動メールを送信する必要があります。

ただし、Google Apps Script を使用してこのプロセスを自動化すると、特有の課題が生じます。電子メールのディスパッチを開始するために重要な組み込みの「onEdit」トリガーは、プログラムによって行われた変更に対してはアクティブになりません。ユーザーの直接の操作によって行われた変更に対してのみアクティブになります。この制限は、「保留中」から「承認済み」へのステータス更新がスクリプトによって実行される場合に大きな障害となります。この導入により、Google スプレッドシート ベースの承認ワークフロー内に自動メール通知をシームレスに統合し、タイムリーなコミュニケーションとプロセスの効率性を確保するソリューションを検討するための基礎が築かれます。

指示 説明
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Approvals") アクティブなスプレッドシートにアクセスし、「Approvals」という名前のシートを取得します。
getDataRange() シート内のすべてのデータを範囲として取得します。
getValues() 範囲内のセルの値を 2 次元配列として返します。
MailApp.sendEmail(email, subject, body) 指定された受信者、件名、本文を含む電子メールを送信します。
sheet.getRange(i + 1, emailSentColumn + 1).setValue("sent") 特定のセルの値を「sent」に設定し、電子メールが送信されたことを示します。
google.script.run Web アプリから Google Apps Script 関数を呼び出します。
withSuccessHandler(function()) google.script.run 呼び出しが成功した場合に実行する関数を指定します。
withFailureHandler(function(err)) google.script.run 呼び出しが失敗した場合に実行する関数を指定し、エラーを引数として渡します。
updateStatusInSheet(approvalId, status) スプレッドシート内の承認リクエストのステータスを更新するカスタム Google Apps Script 関数 (コード スニペットには示されていません)。

自動電子メールのメカニズムを解読する

私が Google スプレッドシート用に設計した自動メール トリガー システムは、組織内の承認プロセス、特に続行する前に複数の承認者の同意が必要な場合の承認プロセスを合理化することを主な目的としています。 Google Apps Script で作成されたソリューションの最初の部分は、承認ステータスが記録される Google スプレッドシートと直接やり取りします。スクリプトは、「承認」シート全体で、承認者 1 と承認者 2 の両方が承認を「承認済み」としてマークしている行をチェックします。スクリプトは両方の承認が与えられた場合にのみ動作し、完全に承認されたリクエストを反映することを目的としているため、これは非常に重要です。これを実現するために、スクリプトは各行を反復処理し、各承認者の決定に対して指定された特定の列とリクエストの全体的なステータスを調べます。行が基準を満たし、両方の承認者が承認し、ステータスが「承認済み」に設定されると、スクリプトによって IT 部門への電子メールが送信されます。この電子メール通知は、スクリプトからの直接電子メール送信を容易にする Google Apps Script の一部である MailApp サービスを使用して送信されます。これにより、承認されたリクエストが IT 部門に即座に通知され、迅速な対応が可能になります。

Web アプリケーションを通じて承認ステータスを更新するメカニズムは、自動電子メール システムのフロントエンドに相当するものとして機能します。 Google スプレッドシートの「onEdit」トリガーはプログラムによる変更ではなく手動編集にのみ応答するため、このコンポーネントは特に重要です。この制限を回避するために、ユーザーはシンプルな Web インターフェイスを使用して承認リクエストのステータスを更新できます。ボタンをクリックしてリクエストを「承認済み」としてマークするなどの操作が行われると、Web アプリは「google.script.run」コマンドを通じて Google Apps Script 関数を呼び出します。このコマンドは、Web インターフェースから受信した入力に基づいてスクリプトが Google シートでアクションを実行できるため、手動編集を効果的に模倣できるため、強力です。その後、スクリプトは変更の確認に進み、設計どおりに電子メールを送信し、「onEdit」トリガーの制限によって生じたギャップを埋めることができます。このデュアルコンポーネント ソリューションにより、承認プロセスの効率性と適応性が確保され、ワー​​クフローでの手動介入と自動介入の両方のニーズに対応できます。

スプレッドシート アプリケーションの承認段階での電子メール通知の合理化

バックエンド処理用の Google Apps Script

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>

スプレッドシートの自動化によるワークフローの効率の向上

2 段階の承認プロセスの一部として Google スプレッドシートでメール通知を自動化するというコンセプトは、組織のワークフローを合理化するための高度な方法を導入します。従来、承認シーケンスにおける手動介入は定番であり、プロセスを前進させるには人間のアクションが必要でした。ただし、Google Apps Script を活用することで、そのような介入が最小限に抑えられるモデルに方向転換し、効率の向上とエラーの削減につながります。この移行により、承認プロセス全体が高速化されるだけでなく、通知が適切な時点、特に両方の承認当事者がリクエストを承認したとき (ステータスが「承認済み」に移行することによってマークされる) で確実に送信されるようになります。

このアプローチは、スプレッドシート内のステータス更新をプログラムで管理すること、つまり「onEdit」トリガーの制限を回避する方法の重要性を強調しています。ステータスの変化をリッスンし、それに応じて電子メール通知を送信するカスタム スクリプトを採用することで、組織は手動のボトルネックを回避し、運用ワークフローの重要なコンポーネントを自動化できます。この方法論の転換により、承認プロセスが改善されるだけでなく、これまで手動プロセスでは達成できなかったレベルの拡張性と適応性が導入され、より動的で応答性の高いワークフロー管理システムへの扉が開かれます。

スプレッドシートの自動化に関するよくある質問

  1. 質問: 自動化プロセスはどの Google スプレッドシート ドキュメントでも機能しますか?
  2. 答え: はい、特定のドキュメントの構造に合わせてスクリプトが正しく設定されていれば、自動化はどの Google スプレッドシート ドキュメントにも適用できます。
  3. 質問: これらのスクリプトを実装するにはコーディングの知識が必要ですか?
  4. 答え: JavaScript の基本的なコーディング知識は、Google Apps Script でのスクリプトのカスタマイズと実装に役立ちます。
  5. 質問: 自動電子メール トリガーは複数の承認リクエストを同時に処理できますか?
  6. 答え: はい、スクリプトはデータ行を反復処理し、各リクエストの承認ステータスをチェックすることで、複数のリクエストを処理できます。
  7. 質問: 自動化されたプロセスはどの程度安全ですか?
  8. 答え: このプロセスは、Google の標準セキュリティ プロトコルを利用してデータを保護するため、Google スプレッドシートや Google Apps Script の操作と同様に安全です。
  9. 質問: スクリプトは複数の電子メール アドレスに通知を送信できますか?
  10. 答え: はい、MailApp.sendEmail 関数の受信者パラメーターを調整することで、複数の電子メール アドレスに通知を送信するようにスクリプトを変更できます。

洞察と今後のステップの要約

2 段階の承認プロセスのために Google スプレッドシート内の自動メール トリガーを調査すると、そのようなワークフローを合理化するための制限と潜在的な解決策についての重要な洞察が明らかになります。デフォルトの onEdit トリガーはプログラムによる変更を認識できないため、承認が完全に確認された場合にのみ通知が送信されるようにするための創造的なスクリプトのアプローチが必要です。このシナリオは、Google スプレッドシートのネイティブ機能のギャップを埋め、より動的で応答性の高い承認プロセスの開発を可能にする、カスタマイズされた Google Apps Script ソリューションの重要性を強調しています。 Google Apps Script を活用して特殊なトリガーと機能を作成することで、組織は業務効率とコミュニケーション フローを強化し、承認段階の完了時に主要な関係者に速やかに通知できるようになります。このディスカッションでは、プラットフォームの制限に直面した場合の適応性の必要性が強調され、自動化システム内での問題解決に対する積極的なアプローチが奨励されます。