Google Spreadsheetをデータ保管先にし、Google Apps ScriptのWebアプリとして動く社内向け進捗管理MVPです。外部Webサーバー、外部DB、Firebase、Cloud Runは不要です。
Code.gs: Webアプリ入口、初期化、タスク更新APIAuth.gs: Google Workspaceユーザー確認、PJメンバー権限チェックDataService.gs: Spreadsheet読み書き、集計、サンプルデータ作成AuditService.gs: 操作ログValidation.gs: 入力チェックNotificationService.gs: Gmail通知IssueCommentsシート: 課題コメント履歴Archivesシート: 完全アーカイブした削除済みプロジェクトのスナップショットindex.html: HTML Service入口styles.html: 現代風UIのCSSscript.html: 画面描画とApps Script呼び出しappsscript.json: Apps Scriptマニフェスト
- Google Spreadsheetを新規作成します。
- メニューから
拡張機能 > Apps Scriptを開きます。 - このフォルダ内の
.gsと.htmlとappsscript.jsonをApps Scriptプロジェクトへ追加します。 - Apps Scriptエディタで
setupSampleSpreadsheetを一度実行します。 デプロイ > 新しいデプロイ > ウェブアプリを選びます。- 実行ユーザーは
自分、アクセスできるユーザーは組織内のユーザーにします。 - 発行されたWebアプリURLを開きます。
- Google Workspaceログイン必須
Settings.allowed_domainで社内ドメインを制限Membersシートに登録されたプロジェクトメンバーのみ閲覧可能- データ取得・更新時にApps Scriptサーバー側で権限チェック
- Spreadsheet本体は管理者のみ編集推奨
- Webアプリは管理者として実行し、Spreadsheetを一般ユーザーへ直接共有しない構成を推奨
- 操作ログを
AuditLogsに保存 - 入力値はサーバー側で検証・サニタイズ
- 横断レポートのCSV出力
- アーカイブデータの閲覧専用画面
- 外部システムとの連携(Slack/Teams等)
appsscript.jsonにhttps://www.googleapis.com/auth/script.scriptappを追加しています。期限超過の定期通知トリガー作成に必要です。- 通知設定は
Settingsシートに保存されます。既存シートを使う場合、画面の通知タブで保存すると不足キーが自動追加されます。 - 期限超過通知は
通知タブの保存後、期限超過通知を有効化を押すと日次トリガーが作成されます。 - 通知テンプレートでは
{{task_name}},{{issue_title}},{{project_name}},{{actor_email}},{{overdue_tasks}},{{overdue_issues}}などのプレースホルダーを利用できます。 - フェーズ削除は、そのフェーズ配下に有効なタスクがある場合はブロックされます。先にタスクを削除または別フェーズへ移動してください。
- タスクは
タスクタブの移動から別フェーズへ移動できます。 復元タブでは、現在開いているプロジェクト内の削除済みフェーズ、タスク、課題を復元できます。- 通知テンプレートのプレビューは、現在ログイン中のユーザー宛にサンプルタスクの内容で送信されます。
- 管理者はサイドバーの
削除済みPJから、削除済みプロジェクトを復元できます。 - タスク一覧で複数タスクをチェックし、
選択タスクを移動から一括でフェーズ移動できます。 - ガントチャート上では、予定バーを別の日付セルへドラッグすると、期間幅を保ったまま開始日・終了日を移動できます。
- 課題の
コメントからコメント履歴を確認し、新しいコメントを追加できます。 - 通知プレビューは
task,issue,overdueから種類を選択できます。 - 課題コメントは作成者本人またはPJ管理者が編集・削除できます。
- ガントチャートの予定バー中央をドラッグすると移動、左右端をドラッグすると開始日/終了日をリサイズできます。
横断タブで、アクセス可能な全プロジェクトの進捗・遅延・課題を集計できます。- 削除済みプロジェクトは
削除済みPJまたは復元タブから復元できます。完全アーカイブを実行するとArchivesシートへスナップショットを保存し、復元一覧から除外されます。 - 課題コメントで
@user@domain.com形式で記述すると、該当ユーザーへメンション通知メールが送信されます(自分自身へのメンションは除外)。 - タスク編集モーダルの「先行タスク」で依存するタスクを選択すると、ガントチャート上に青い矢印で依存関係が表示されます。
- サイドドロワー形式の詳細表示: タスク名または課題名をクリックすると、画面右側からスライドパネルが表示され、詳細情報(概要・ブロッカー・期限等)を確認できます。
- 概要(summary)フィールドの追加: タスクおよび課題に「概要」フィールドが追加されました。既存のシートを利用している場合、
TasksおよびIssuesシートのヘッダー行にsummary列を手動で追加してください。 - 既存シートへの
depends_on列追加: 既存の Tasks シートを利用している場合、シート1行目のヘッダー行にdepends_on列を手動で追加してください。新規セットアップ(setupSampleSpreadsheet実行)では自動で追加されます。