2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📚 GASだけで社内図書館をフルスクラッチした話 〜貸出・予約・延滞・通知・カタログ・マイページまで全部Google Apps Script〜

Posted at

はじめに

社内にこんな悩み、ありませんか?

  • 「この本、誰が借りてるんだっけ?」
  • 「予約したのに連絡来ない…」
  • 「延滞してるけど、誰も気づいてない」
  • 「管理が属人化してる」

私の会社でも、社内書籍が完全にブラックボックスでした。

そこで思いました。

「これ、GASで全部自動化できるのでは?」

結果として完成したのが、

📚 Google Forms + Spreadsheet + Gmail + GAS だけで動く
社内書籍管理システム

この記事では、その設計思想・仕組み・面白ポイントをまとめます。


システム全体像

使っているのは、すべて Google標準サービス

役割 サービス
UI Googleフォーム / HTMLダイアログ
DB Googleスプレッドシート
ロジック Google Apps Script
通知 Gmail
書誌情報 Google Books API
ダッシュボード Looker Studio

サーバー?DB?フレームワーク?
👉 ありません。全部GASです。


機能一覧(やりすぎた)

気づいたら、ここまで増えていました。

📖 基本機能

  • 新規貸出
  • 返却
  • 延長(条件付き)
  • 予約 / 予約キャンセル

⏰ 自動化

  • 返却7日前・3日前リマインド
  • 延滞通知(平日・昼間のみ)
  • 予約取り置き7日ルール(自動キャンセル)
  • 毎週CSVバックアップ

👤 ユーザー向け

  • マイページ(自分の貸出・予約状況)
  • Web書籍カタログ(無限スクロール)
  • 貸出中の本に対する代替書籍AI提案

🛠 管理者向け

  • 整合性チェック(延滞ハイライト)
  • ISBN×タイトル不一致検出
  • フォーム選択肢の自動更新
  • ログ記録

設計のキモ①

「台帳を分けた」のがすべての始まり

書籍一覧(マスター)

  • 書籍名
  • ISBN
  • カテゴリ
  • 状態(貸出可能 / 貸出中 / 貸出不可)

貸出状況(トランザクション)

  • 借用者
  • 貸出日 / 返却予定日
  • 延長回数
  • 予約者リスト
  • 通知タイムスタンプ

👉 在庫と履歴を分離したことで、

  • 状態遷移が明確
  • ロジックが爆発しない
  • 機能追加が楽

になりました。


設計のキモ②

GASでも「業務ルール」をコードに落とす

例えば延長ルール。

  • 返却3日前を過ぎたらNG
  • 最大2回まで
  • 予約が多いほど延長日数は短縮
if (diff < 3) throw new Error('返却3日前以降は延長不可');
if (extCnt >= MAX_EXTENDS) throw new Error('延長上限');
if (reserveCnt >= 3) throw new Error('予約が多いため延長不可');

👉 人が判断してたルールを、すべてコード化

結果:

  • 問い合わせが激減
  • 運用がブレない
  • 管理者が楽

設計のキモ③

通知は「うるさくしない」

延滞通知、毎日飛ばしたら嫌われます。

なので、

  • 平日のみ
  • 10:00〜14:00だけ
  • HTMLメールで丁寧に
if (isWeekday && isDaytime) {
  GmailApp.sendEmail(...);
}

「ちゃんと考えられてる感」
これ、地味に評価されます。


おまけ機能①

📚 代替書籍AI(っぽいもの)

貸出中の本を開くと…

「この本は貸出中です。こちらはいかがですか?」

  • カテゴリタグを分解
  • 共通タグ数でスコアリング
  • 上位3冊を提案
const matchScore = commonTags.length;

AI?
いいえ、アルゴリズムです
でも体験としては十分AIっぽい。


おまけ機能②

🔍 ISBN × タイトル不一致検出

Google Books APIと突き合わせて、

  • 表記ゆれ → OK
  • 類似度80%以下 → ❌

結果はレポートシートに自動生成。

「そのタイトル、実は違う本です」

これが地味に一番感謝されました


GASでここまでやって分かったこと

良かった点

  • 学習コストが低い
  • 社内ツールに最適
  • 権限管理が楽
  • 運用がとにかく早い

つらい点

  • 1ファイルが巨大化する
  • 型がない
  • テストが書きにくい

👉 それでも、

「社内ツールならGASは最強」

という結論に落ち着きました。


まとめ

  • GASは「ちょっとした自動化」だけじゃない
  • ちゃんと設計すれば業務システムになる
  • Google環境完結は正義

もし、

  • 社内ツールを作りたい
  • フルスクラッチは重すぎる
  • 運用をラクにしたい

そんな人がいたら、
GAS、全力でおすすめです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?