ドキュメントの承認プロセスを手動で行うと、ステータスの確認や承認者への依頼に時間がかかり、業務の効率が悪くなります。特に複数の関係者が関わる場合、承認の進捗がわかりにくく、誰が何をしているのか把握しづらいものです。そこでGoogleドキュメントとGoogleスプレッドシートを組み合わせ、Apps Scriptを使って承認フローを自動化する方法をご紹介します。この記事を読み終えると、ドキュメントの承認ステータスを一元管理し、承認者に自動でメールを送信する仕組みを実装できるようになります。
【要点】Apps Scriptで承認フローを自動化する3つのステップ
- スプレッドシートに承認ステータス列を追加: ドキュメントURLと承認状態を管理するシートを準備します。
- カスタムメニューで承認・否認ボタンを作成: 承認者がワンクリックでステータスを変更できるUIを用意します。
- onEditトリガーでステータス変更時にメール通知: ステータスが変わると自動で関係者にメールが届く仕組みを組み込みます。
ADVERTISEMENT
目次
Apps Scriptを使った承認フローの仕組み
承認フローは、GoogleドキュメントのURLを管理するスプレッドシートと、Apps Scriptで作成したプログラムによって動作します。まずスプレッドシートに、ドキュメント名、URL、承認者、承認ステータス(未承認、承認済み、否認済み)、承認日時などの列を用意します。Apps Scriptはシートの編集を監視し、特定のセルが変更されたときにメールを送信したり、メニューから直接ステータスを変更できる機能を追加します。これにより、手動でメールを書いたりステータスを確認する手間が省け、全員がリアルタイムで承認状況を把握できます。
承認フロー実装の手順
ここでは具体的な実装手順を4つの工程に分けて説明します。順番に進めることで、承認フローの基本形が完成します。
ステップ1: スプレッドシートを準備する
- 新しいスプレッドシートを作成する
Googleドライブから「新規」→「Googleスプレッドシート」を選択し、任意の名前(例「ドキュメント承認管理」)を付けます。 - 見出し行を設定する
1行目に次の列見出しを入力します。A列: ドキュメント名、B列: URL、C列: 承認者メール、D列: ステータス、E列: 承認日時、F列: 備考。 - サンプルデータを入力する
2行目以降に実際のドキュメント情報を入力します。ステータスは初期値として「未承認」と入力しておきます。
ステップ2: Apps Scriptプロジェクトを作成する
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックし、スクリプトエディタを開きます。 - プロジェクト名を変更する
デフォルトの「無題のプロジェクト」を「承認フロー管理」などに変更します。 - 次のコードをコピーして貼り付ける
エディタに以下のコードを貼り付け、Ctrl+Sで保存します。
// カスタムメニューを作成
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('承認メニュー')
.addItem('選択行を承認', 'approve')
.addItem('選択行を否認', 'reject')
.addToUi();
}
// 承認処理
function approve() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var row = range.getRow();
if (row < 2) return;
sheet.getRange(row, 4).setValue('承認済み');
sheet.getRange(row, 5).setValue(new Date());
sendEmail(row, '承認されました');
}
// 否認処理
function reject() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveRange();
var row = range.getRow();
if (row < 2) return;
sheet.getRange(row, 4).setValue('否認済み');
sheet.getRange(row, 5).setValue(new Date());
sendEmail(row, '否認されました');
}
// メール送信
function sendEmail(row, status) {
var sheet = SpreadsheetApp.getActiveSheet();
var docName = sheet.getRange(row, 1).getValue();
var url = sheet.getRange(row, 2).getValue();
var recipient = sheet.getRange(row, 3).getValue();
var subject = 'ドキュメント承認状態: ' + status;
var body = 'ドキュメント「' + docName + '」が' + status + '。\nURL: ' + url;
MailApp.sendEmail(recipient, subject, body);
}
ステップ3: メニューを有効化する
- スクリプトを保存して閉じる
コードを保存し、スクリプトエディタを閉じます。 - スプレッドシートを再読み込みする
シートをリロードすると、メニューに「承認メニュー」が表示されます。初回は権限の承認が必要です。 - 承認メニューをテストする
任意の行を選択し、「承認メニュー」→「選択行を承認」をクリックします。ステータスが「承認済み」に変わり、承認者にメールが送信されることを確認します。
ステップ4: トリガーを設定する(オプション)
- トリガーを開く
スクリプトエディタの左側の時計アイコンをクリックし、「トリガー」画面を開きます。 - 新しいトリガーを追加する
右下の「トリガーを追加」をクリックし、次の設定を行います。
実行する関数: onEdit(後で作成)
デプロイ: ヘッド
イベントのソース: スプレッドシートから
イベントの種類: 編集時 - onEdit関数を追加する
先ほどのコードの最後に以下の関数を追加し、保存します。function onEdit(e) { // 編集内容に応じて処理を追加(今回は空) }このトリガーは、手動でステータスを変更した際にもメールを送りたい場合に便利ですが、基本的にはメニューで完了するため必須ではありません。
よくあるトラブルと対処法
承認メニューが表示されない
スプレッドシートを開いたときに「承認メニュー」が表示されない場合、スクリプトが正しく保存されていないか、権限が不足している可能性があります。まずスクリプトエディタでコードにエラーがないか確認し、再度保存してください。また、シートをリロードしても表示されない場合は、ブラウザのキャッシュをクリアしてみてください。
メールが送信されない
メール送信が機能しない原因として、承認者メールアドレスが正しくない、またはGoogle Apps Scriptのメール送信制限(1日あたり100通まで)に達していることが考えられます。シート内のメールアドレスが正しい形式(例: user@example.com)であることを確認し、制限に引っかかっていないかもチェックします。また、Gmailの送信制限を回避するには、MailApp.sendEmailではなく、GmailApp.sendEmailを使用する方法もあります。
権限エラーが発生する
初回実行時には、スクリプトに「メールを送信する」「スプレッドシートを編集する」などの権限を承認するダイアログが表示されます。承認しないと機能しません。もし権限エラーが頻発する場合は、スクリプトエディタの「デプロイ」→「新しいデプロイ」からアプリとして公開し、そのデプロイIDを使用する方法も検討します。
ADVERTISEMENT
手動承認とスクリプト自動承認の比較
| 項目 | 手動承認 | スクリプト自動承認 |
|---|---|---|
| 作業時間 | メール作成やステータス更新に時間がかかる | ワンクリックで完了し、大幅に短縮 |
| ヒューマンエラー | ステータス更新忘れや誤通知が発生しやすい | プログラムが自動で実行するためミスが少ない |
| リアルタイム性 | 更新が遅れがちで状況把握が難しい | 即座にステータスが反映され全員が共有 |
| スケーラビリティ | ドキュメント数が増えると管理が困難 | シートの行を増やすだけで簡単に拡張可能 |
まとめ
Apps Scriptを使うことで、Googleドキュメントの承認フローをスプレッドシート上で効率的に管理できるようになります。この記事で紹介したカスタムメニューとメール通知の仕組みを実装すれば、承認ステータスの更新や関係者への連絡が自動化され、業務のスピードと正確性が向上します。さらに、onEditトリガーを活用してステータス変更のログを取る機能や、承認者を複数設定する機能へ拡張することも可能です。まずはサンプルコードをそのまま試して、承認フロー自動化の第一歩を踏み出してください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleドキュメントの人気記事ランキング
- 【Googleドキュメント】上付き・下付き文字の入力方法!ショートカットと手動切替
- 【Googleドキュメント】ルビ(ふりがな)を振る方法!代替ツールとアドオンの活用
- 【Googleドキュメント】文字間隔(字間)を調整する方法!カーニングの代替手段
- 【Googleドキュメント】図表番号の自動採番!Figure 1, Table 2 の連番
- 【Googleドキュメント】Docs→Wordへエクスポート!docx出力での書式維持
- 【Googleドキュメント】縦書き表示を実現する方法!代替ツールと回避策
- 【Googleドキュメント】インデントを正確に調整する方法!ルーラーとタブストップの使い方
- 【Googleドキュメント】罫線を縦・横に挿入する方法!Wordの罫線機能との比較
- 【Googleドキュメント】共有後に閲覧履歴を確認!誰がいつ開いたかの追跡
- 【Googleドキュメント】共有先の名前が表示されない時の対処!匿名動物アイコンの正体
