【Googleドキュメント】Apps Scriptで承認ワークフロー作成!Slack通知付き

【Googleドキュメント】Apps Scriptで承認ワークフロー作成!Slack通知付き
🛡️ 超解決

Googleドキュメントで申請書を作成し、承認者に手動でメールを送っている方は多いのではないでしょうか。しかし、承認プロセスが属人化し、通知漏れや返信の遅れが発生することがあります。本記事では、Google Apps Scriptを活用して承認ワークフローを自動化し、承認依頼をSlackに通知する方法を解説します。これにより、承認プロセスを効率化でき、チーム内のコミュニケーションも円滑になります。

【要点】Google Apps Scriptで承認ワークフローを作成しSlack通知を実装する

  • Slack Incoming Webhookの設定: Slack APIページでWebhook URLを生成し、スクリプト内で使用します。
  • Googleドキュメントのスクリプトエディタ: ドキュメントのメニューからスクリプトエディタを開き、承認処理のコードを記述します。
  • トリガーの設定: スクリプトを定時実行またはフォーム送信時に実行するようトリガーを設定します。
  • 承認結果の記録: 承認ステータスをGoogleスプレッドシートに自動保存し、後から確認できます。

ADVERTISEMENT

承認ワークフロー自動化の基本知識

Apps ScriptはGoogleのサービスを拡張するJavaScriptベースのスクリプト環境です。Googleドキュメントにスクリプトを追加することで、ドキュメントの内容を読み取り、外部サービスにデータを送信できます。承認ワークフローを構築するには、SlackのIncoming Webhook機能が必要です。事前にSlack APIページからWebhook URLを取得しておいてください。また、GoogleドキュメントのスクリプトエディタにアクセスできるGoogleアカウントが必要です。

承認ワークフローを構築する手順

申請用Googleドキュメントの準備

まず、承認申請に使用するGoogleドキュメントを作成します。ドキュメント内に申請者の名前、申請内容、承認者などのフィールドを設けます。フィールドは表形式にするとスクリプトで取得しやすくなります。ドキュメントの末尾に「送信」ボタンを追加するため、描画オブジェクトでボタンを挿入しても構いませんが、今回はメニューから実行する方法を採用します。

スクリプトエディタでコードを記述

Googleドキュメントのメニューから「拡張機能」→「Apps Script」を選択し、スクリプトエディタを開きます。以下の手順で関数を作成します。

  1. 承認依頼を送信する関数を作成
    sendApprovalRequestという関数を作成します。この関数内で、DocumentAppのgetActiveDocumentメソッドでアクティブなドキュメントを取得します。次に、getBodyメソッドで本文を取得し、さらにgetTextメソッドでテキスト文字列を変数に代入します。その後、Slackに送信するメッセージを構築し、JSON形式に変換します。最後に、UrlFetchAppのfetchメソッドでWebhook URLに対してPOSTリクエストを送信します。
  2. メニューにスクリプトを追加
    onOpen関数を定義し、ドキュメントが開かれたときにカスタムメニューを追加します。onOpen関数では、DocumentAppのgetUiメソッドでUIを取得し、createMenuメソッドでメニューを作成します。そしてaddItemメソッドで「承認依頼を送信」という項目を追加し、先ほど作成したsendApprovalRequest関数を呼び出すよう設定します。

Slack通知のテスト

ドキュメントを保存し、再度開くとメニューに「承認依頼を送信」という項目が表示されます。適当な内容をドキュメントに入力し、メニューから実行します。Slackの該当チャンネルにメッセージが届けば成功です。エラーが出る場合は、Webhook URLが正しいか、スクリプトの権限設定を確認します。

承認結果をスプレッドシートに記録する

承認依頼の履歴を残すために、Googleスプレッドシートに記録する機能を追加します。スクリプト内でSpreadsheetAppのopenByIdメソッドでスプレッドシートを開き、getActiveSheetでシートを取得します。appendRowメソッドで日付、申請者、内容、ステータスなどのデータを追加します。

Slackメッセージに承認ボタンを追加する

SlackのInteractive Componentsを利用すると、メッセージにボタンを追加できます。承認ボタンが押されたときの処理をApps Scriptで受け取るには、Webアプリとして公開する必要があります。doPost関数を定義し、SlackからのPOSTリクエストを処理します。こうすることで、承認者がSlack上で承認操作を行えます。

よくあるエラーとその対処法

Webhook URLが正しく設定されていない

Slackにメッセージが届かない場合、まずWebhook URLが間違っていないか確認します。Slack APIページで再度コピーし、スクリプト内の変数に貼り付けます。URLにスペースがないかも確認します。

スクリプトの実行に必要な権限が不足している

初回実行時に権限の承認ダイアログが表示されます。必要な権限を確認し、許可してください。拒否した場合は、後からスクリプトエディタの「実行」メニューから再度承認を求められます。

トリガーが正しく設定されていない

定期的に承認依頼をチェックしたい場合、トリガーを設定します。スクリプトエディタの時計マークアイコンからトリガーを追加し、時間主導型またはイベント主導型を選択します。時間間隔は分単位から月単位まで選べます。

ADVERTISEMENT

手動承認と自動承認の違い

項目 手動承認 Apps Script自動承認
通知方法 メール手動送信 Slack自動通知
記録管理 メール保存や手動記入 スプレッドシート自動保存
処理速度 承認者の対応次第 即時通知、返信待ち可能
コスト 人件費 初期設定のみ

まとめ

本記事では、GoogleドキュメントのApps Scriptを使い、承認ワークフローを自動化する方法を解説しました。Slack通知を組み合わせることで、承認依頼の漏れを防止し、迅速な承認プロセスを実現できます。次は、承認結果を自動でGoogleドキュメントに反映させる機能や、承認者が直接Slackから承認操作を行えるボタン機能の追加に挑戦してみてください。これらのカスタマイズにより、さらに効率的なワークフローを構築できます。


ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED