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

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

  • 毎朝 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やスプレッドシートを使った業務効率化を、現場に合わせて一緒に設計します。

無料相談を申し込む →

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA