GASで作るスプレッドシート承認ワークフロー

GASで作るスプレッドシート承認ワークフロー

記事
IT・テクノロジー
GASで作るスプレッドシート承認ワークフロー

中小企業の経営者やフリーランスの皆さん、こんにちは。GASおじです。このブログでは、Google Apps Script(以下GAS)を使ってスプレッドシートでの承認ワークフローを自作する方法を解説します。SaaSの月額課金は痛いけど、業務の効率化はしたい…そんなあなたにぴったりの内容ですよ。


■ なぜGASで承認ワークフローを作るのか?

承認ワークフローと言えば、専用のSaaSツールが思い浮かびますね。しかしこれらは、毎月のサブスク料金が経営を圧迫することも。GASならGoogleアカウントの利用枠内で動かせるので、追加の専用SaaS料金は発生しません(ただしApps Scriptのquotaや実行上限はあります)。

おじさんが提案するのは、既存データを壊さずに新規シートやファイルに承認結果を書き出す運用。これならデータの安全性が高いし、バックアップやトラブル時の復元もスムーズです。


■ 承認ワークフローの設計ポイント

・入力検証 承認前に申請データの必須項目チェックを行い、誤入力を防ぎます。
・バッチ書き込み 複数行のデータがある場合はまとめて書き込み処理し、API呼び出し回数を削減。これでスクリプト実行時間も短縮できます。
・バックアップとロールバック 承認結果を新しい日時付きシートや新ファイルに出力し、元データは触らない。失敗しても過去のデータから復元可能です。
・初期設定と必要権限 スクリプトはスプレッドシートの編集権限とGoogleドライブのファイル作成権限を要求します。 また、承認処理はInstallable Trigger(例:時間主導型トリガー)で定期実行させるのがおすすめ。


■ 具体的なGASコード例

以下は、承認待ちのデータをチェックし、承認可能な申請を新規の日時付きシートにまとめて出力するサンプルコードです。既存シートのデータは更新・削除せず、新規にシートを追加しています。

function approvalWorkflow() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sourceSheet = ss.getSheetByName('申請データ');
if (!sourceSheet) {
Logger.log('申請データシートが見つかりません');
return;
}

const dataRange = sourceSheet.getDataRange();
const data = dataRange.getValues();
const header = data[0];

// 承認結果を書き込む新規シートを日時付きで作成
const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
const newSheetName = `承認結果_${timestamp}`;
const resultSheet = ss.insertSheet(newSheetName);

// ヘッダー行をコピー
resultSheet.getRange(1, 1, 1, header.length + 1).setValues([header.concat('承認結果')]);

const output = [];

// 入力検証+承認判定(例:申請ステータスが「承認待ち」で申請内容が空でない)
for (let i = 1; i < data.length; i++) {
const row = data[i];
const status = row[header.indexOf('ステータス')];
const content = row[header.indexOf('申請内容')];

if (status === '承認待ち' && content && content.toString().trim() !== '') {
// 承認処理(ここでは仮に「承認済み」とする)
const approvedRow = row.concat('承認済み');
output.push(approvedRow);
}
}

if (output.length === 0) {
Logger.log('承認対象がありません');
return;
}

// バッチ書き込み
resultSheet.getRange(2, 1, output.length, output[0].length).setValues(output);
}


■ 初期設定と運用上の注意点

・必要権限 このスクリプトは実行時にスプレッドシートの編集権限および新規シートの作成権限を求めます。
・Installable Trigger設置例 定期的に承認状況をチェックしたいなら、GASの「編集」→「現在のプロジェクトのトリガー」から時間主導型トリガーを設定しましょう。
・個人情報の取扱い スプレッドシート内の個人情報は適切に管理してください。GASはGoogleのセキュリティ下で動きますが、アクセス権限の管理はユーザー側の責任です。
・復元手順 承認結果は新規シートに出力されるため、万が一の誤操作時も元データは残っています。必要に応じて日時付きシートから復元可能です。


■ コスト削減イメージ

仮にSaaS承認ツールが月額5,000円かかるとして、年間60,000円。おじさんのGASワークフローは追加のSaaS料金なし(Googleアカウントの利用枠内で動作)。ただしApps Scriptの実行クォータに注意しつつ、運用が可能です。コスト削減額の計算式例

年間削減額 = SaaS月額料金 × 12ヶ月 - GAS運用にかかる人件費

(人件費は運用規模により変動します)

GASを使えば、追加の専用SaaS料金なしで自社の業務に合わせた承認ワークフローが作れます。もちろんGoogleアカウントの利用枠内での利用に限られ、Apps Scriptのquotaや実行上限はあるので大規模な運用は慎重に。

もしGASでさらに多彩な業務自動化ツールを探しているなら、こちらもぜひチェックしてみてください。

■ GASの相談や導入サポートを見たい方へ

この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。

■ 関連サービス

GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す