カテゴリー: プロジェクト管理

  • 毎朝の「進捗どう?」をなくす方法

    毎朝の「進捗どう?」をなくす方法

    あなたのチーム、こんな状況になっていませんか?

    • 毎朝 Slack で「今日の進捗どうですか?」と聞いて回っている
    • スプレッドシートの管理シートが「誰かが更新するまで古いまま」
    • 締め切り3日前になってはじめてタスクの遅延に気づく

    📊 インフォグラフィック挿入箇所

    【Before → After】GAS導入でチームの進捗管理がこう変わる
    ※画像生成後にこのブロックを差し替えてください

    そのムダ、全部なくせます。しかも月額0円で。

    この記事では、GAS(Google Apps Script)とGoogleスプレッドシートを組み合わせて、チームの進捗を自動集計するダッシュボードを作る方法を、実装コードつきで解説します。「コードは書いたことがない」という方でも、コピペ&数クリックの設定で完成します。

    📋 この記事でわかること

    • GAS + Googleスプレッドシートでプロジェクト管理ダッシュボードを作る手順
    • タスク進捗を担当者別に自動集計するコードの書き方
    • 期限が近いタスクをメールで自動通知する仕組み
    • 毎日自動実行するトリガーの設定方法

    ✅ こんな人に向けています

    • プロジェクトの進捗をチャットで毎回確認するのが面倒な方
    • 高額なプロジェクト管理ツールは使いたくない方
    • Google Workspaceは使っているが、もっと活用したい方
    • コードは書けないけど、こういう仕組みが欲しい方

    私自身が副業の現場で「タスクの進捗がメンバーごとにバラバラ」「進捗確認のたびにチャットで聞かないといけない」という状況を何とかしたくて作ったのがこのダッシュボードです。

    月額費用はゼロ。Googleアカウントさえあれば今日から動かせます。


    なぜGAS+スプレッドシートがプロジェクト管理に向いているのか

    世の中にはAsanaやNotionなど優れたプロジェクト管理ツールがたくさんあります。でも「5〜20人の中小チームでちょっとした進捗管理がしたい」だけなら、コストと学習コストが見合わないことが多いのです。

    😓 よくある課題

    • 月額費用が高い
    • チームへの導入ハードルが高い
    • 機能が多すぎて使いこなせない
    • データが外部に出るのが不安

    ✅ GAS+スプレッドシートなら

    • 月額ゼロ円(Googleアカウントのみ)
    • 全員がスプレッドシートを知っている
    • 自社の運用に合わせてカスタマイズ自由
    • データはGoogleドライブ内に留まる

    GASに限界があることも事実です。100人規模・複雑なワークフローには向きません。でも5〜20人規模なら十分すぎるくらい機能します


    全体の構成を把握しよう

    まず完成イメージを頭に入れてから作り始めましょう。システムは大きく3つのパーツで成り立っています。

    📋
    ①タスク一覧シート
    データを入力する場所
    ⚙️
    ②GASが自動処理
    集計・判定・通知
    📊
    ③ダッシュボード
    自動で更新される

    毎朝トリガーで①→②→③が自動的に実行されます

    3枚のシート構成

    シート名 役割 操作する人
    タスク一覧 タスクデータを入力・管理 メンバー全員
    ダッシュボード 集計結果を表示(自動更新) GASが自動で書き込む
    設定 アラート日数などの設定値 管理者のみ

    GAS導入でチームの進捗管理がこう変わる

    STEP 1:スプレッドシートの準備

    Googleドライブで新しいスプレッドシートを作成し、3枚のシートを用意します。まず「タスク一覧」シートの1行目にヘッダーとして以下の9項目を入力してください。

    A: タスク名 / B: 担当者 / C: ステータス / D: 優先度
    E: 開始日 / F: 期限 / G: 完了日 / H: 進捗率(%) / I: コメント

    💡 ポイント:ステータスの値を統一する

    ステータス列には「未着手」「進行中」「完了」「保留」の4つだけを使うようにルール化しましょう。スペルミスや表記揺れがあると集計が正確に動きません。


    STEP 2:GASでダッシュボードを自動更新する

    いよいよGASのコードを書いていきます。Google Apps ScriptはGoogleスプレッドシートのメニューから「拡張機能」→「Apps Script」で開けます。

    🚀 GASエディタの開き方

    1. Googleスプレッドシートを開く
    2. 上部メニュー「拡張機能」→「Apps Script」をクリック
    3. ブラウザの新しいタブでGASエディタが開きます

    コード①:ダッシュボードを自動更新する

    以下のコードをGASエディタに貼り付けて「実行」ボタンを押してください。

    function updateDashboard() {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const taskSheet = ss.getSheetByName('タスク一覧');
      const dashSheet = ss.getSheetByName('ダッシュボード');
    
      // タスクデータ取得(2行目から最終行まで)
      const lastRow = taskSheet.getLastRow();
      const data = taskSheet.getRange(2, 1, lastRow - 1, 5).getValues();
    
      // 担当者ごとの進捗を集計
      const memberStats = {};
      data.forEach(row => {
        const [task, member, status] = row;
        if (!memberStats[member]) {
          memberStats[member] = { total: 0, done: 0 };
        }
        memberStats[member].total++;
        if (status === '完了') memberStats[member].done++;
      });
    
      // ダッシュボードに書き込み
      dashSheet.clearContents();
      dashSheet.getRange('A1').setValue('担当者');
      dashSheet.getRange('B1').setValue('タスク数');
      dashSheet.getRange('C1').setValue('完了数');
      dashSheet.getRange('D1').setValue('完了率');
    
      let row = 2;
      for (const [member, stats] of Object.entries(memberStats)) {
        const rate = Math.round((stats.done / stats.total) * 100);
        dashSheet.getRange(row, 1).setValue(member);
        dashSheet.getRange(row, 2).setValue(stats.total);
        dashSheet.getRange(row, 3).setValue(stats.done);
        dashSheet.getRange(row, 4).setValue(rate + '%');
        row++;
      }
    }

    ✅ 動作確認

    「実行」ボタンを押すと、ダッシュボードシートに担当者別の集計結果が自動入力されます。初回は「権限を確認」ダイアログが出るので「許可」をクリックしてください。

    コード②:期限リマインダーメールを送る

    期限3日前になったタスクの担当者へ、自動でメール通知します。

    function sendDeadlineReminder() {
      const ss = SpreadsheetApp.getActiveSpreadsheet();
      const sheet = ss.getSheetByName('タスク一覧');
      const lastRow = sheet.getLastRow();
      const data = sheet.getRange(2, 1, lastRow - 1, 5).getValues();
    
      const today = new Date();
      const threeDaysLater = new Date();
      threeDaysLater.setDate(today.getDate() + 3);
    
      data.forEach(row => {
        const [task, member, status, deadline, email] = row;
        if (status === '完了') return; // 完了済みはスキップ
    
        const deadlineDate = new Date(deadline);
        if (deadlineDate <= threeDaysLater && deadlineDate >= today) {
          GmailApp.sendEmail(
            email,
            `【期限注意】${task}`,
            `${member}さん\n\n「${task}」の期限が${deadline}です。\n進捗確認をお願いします。`
          );
        }
      });
    }

    ⚠️ 注意

    「タスク一覧」シートのE列に、担当者のメールアドレスを入力しておく必要があります。Gmail形式(例:yamada@gmail.com)で入力してください。


    STEP 3:トリガーを設定して自動実行にする

    コードを毎日手動で実行するのは手間がかかります。GASのトリガー機能を使えば、指定した時間に自動実行できます。

    🕐 トリガー設定の手順

    1. GASエディタ左メニューの「時計アイコン(トリガー)」をクリック
    2. 右下の「+トリガーを追加」ボタンをクリック
    3. 実行する関数:sendDeadlineReminder を選択
    4. イベントのソース:時間主導型 を選択
    5. 時間の種類:日タイマー、時刻:午前9時〜10時 に設定
    6. 「保存」をクリック → 毎朝9時に自動でリマインダーメールが送信されます

    GASでできること・できないこと

    GASは非常に便利ですが、万能ではありません。導入前に確認しておきましょう。

    ✅ GASが得意なこと

    • Googleスプレッドシートの自動集計
    • Gmailでのメール自動送信
    • Googleカレンダーへの自動登録
    • 定期的なバッチ処理
    • フォーム回答の自動仕分け

    ❌ GASが苦手なこと

    • リアルタイムの処理(遅延あり)
    • 大量データの高速処理
    • Google以外のサービス連携(要API)
    • 複雑なUI・アプリ画面の作成
    • 1回の実行が6分を超える処理

    まとめ

    📝 この記事のまとめ

    • GASとGoogleスプレッドシートで月額0円のプロジェクト管理ダッシュボードが作れる
    • 3シート構成(タスク一覧・ダッシュボード・設定)でシンプルに管理
    • 担当者別の進捗自動集計で管理者の確認作業を大幅削減
    • 期限リマインダーで期限切れタスクを事前に防止
    • トリガー設定で毎朝自動実行→完全ハンズフリー運用が可能

    「自分の会社の業務フローに合わせてカスタマイズしたい」「もっと複雑な集計ロジックを実装したい」という方は、お気軽にご相談ください。

    💼 業務自動化の相談はこちら

    GASやスプレッドシートを使った業務効率化を、現場に合わせて一緒に設計します。

    無料相談を申し込む →