業務自動化

美容室のスタッフ勤怠・指名予約データをGASで自動集計し、月次レポートをSlackに自動通知する方法

美容室・サロン の業務自動化レシピ
業種美容室・サロン
ツールGoogle Apps Script (GAS)
難易度★★☆ 中
設定時間約 120 分

美容室の月次評価を、Google スプレッドシートと GAS(Google Apps Script)で集計し、Slack に通知する方法を紹介します。売上だけでなく、指名率・リピート率・勤怠を確認できるため、店長の集計作業を減らし、面談で話すべき内容を整理できます。

読了時間: 約 35 分 / 実践時間: 約 120 分 / 対象: 美容室経営者・サロン店長・中小サービス業の管理者

編集長の見解: 美容室の評価は、売上だけでは判断できません。指名、再来店、勤怠、接客、育成を分けて確認すると、店長の印象だけに頼らない面談を進めやすくなります。まずは無料で使える Google スプレッドシートと GAS で、集計の土台を作るのが現実的です。

美容室のスタッフ評価が難しい理由

美容室の評価は、単純な売上順位だけでは決めにくいものです。技術、接客、集客、後輩育成など、役割がスタッフごとに異なるからです。

技術力・接客力・集客力を分けて見る

美容師には、施術の技術だけでなく、お客様との会話や再来店につなげる提案も求められます。技術が高くても新規の指名が少ない人や、接客が丁寧でも平均単価が伸びない人がいます。

売上だけを評価すると、アシスタント業務や店全体への貢献が見えにくくなります。シャンプー、カラー補助、開店準備、後輩指導も、店舗運営を支える重要な仕事です。

売上に表れにくい貢献を記録する

新人スタッフの売上が少なくても、貢献がないとは限りません。施術補助によって、スタイリストが多くのお客様を担当できる場合があるためです。

中堅スタッフも、売上だけでなく次回予約や店販の提案で貢献することがあります。見えにくい仕事を記録すると、面談で具体的に話せます。

店長の印象だけで決めるリスク

「あのスタッフは感じがよい」「前回は頑張っていた」という印象は、評価材料の一つです。ただし、それだけで評価を決めると、後から基準が分かりにくくなります。

評価項目と計算方法を先に決めると、スタッフが次の目標を立てやすくなります。最初から複雑にせず、指名率と勤怠など、確認しやすい項目から始めましょう。

編集部メモ: 最初からすべてを数値化する必要はありません。売上、指名、リピート、勤怠、接客のうち、まず 2 項目をそろえるだけでも、面談の根拠を作れます。

次は、評価項目を 3 本柱に分け、集計しやすい形に整えます。

評価制度を 3 本柱で設計する

評価項目は、定量的指標、定性的指標、キャリア成長の 3 本柱に分けると整理しやすくなります。最初は柱 1 だけ導入し、運用が安定してから項目を増やします。

柱 1: 定量的指標

予約システムや売上表から取得できる数字です。計算方法を先に決めておきます。

たとえば、月間売上が ¥2,500,000、スタッフが 4 名なら、単純平均は 1 人あたり ¥625,000 です。実際の評価では、勤務時間や管理業務も加味してください。

柱 2: 定性的指標

数字だけでは判断しにくい技術、接客、チーム貢献を確認します。5 段階のチェック表にすると、店長の感覚だけに偏りにくくなります。

複数の評価者がいる場合は、店長と担当者の平均を使う方法もあります。評価者を増やしすぎると負担になるため、まずは店長と副店長など 2 名程度で試します。

柱 3: キャリア成長

短期売上に表れにくい学習や育成を記録します。本人が目標を決め、達成状況を月次または半年単位で振り返ります。

柱指標例データの記録先導入時期編集部の評価
定量的指標売上、指名率、リピート率、勤怠予約表、売上表、勤怠表最初まず導入
定性的指標技術、接客、チーム貢献チェック表、フォーム3〜6 か月後運用しやすい
キャリア成長目標、研修、後輩育成面談記録、研修履歴半年〜1 年後長期向け

導入のヒント: 最初の 1 か月は、売上・指名率・勤怠の 3 項目だけに絞ります。運用できたら、接客や育成の記録を加えると、入力作業が増えすぎません。

評価項目が決まったら、次は面談準備やコメント作成を効率化します。

AI を評価業務の下書きに使う

毎月の評価では、数値の確認に加えてコメント作成や面談準備も必要です。AI を下書き作成に使えば、店長は内容の確認と本人との対話に時間を使えます。

評価コメントの下書きを作る

GAS で集計した売上、指名率、リピート率、勤怠を、ChatGPT などに入力します。個人名や顧客名は削除し、必要最小限の情報だけを使ってください。

あなたは美容室の店長です。以下の情報をもとに、スタッフへの評価コメントの下書きを 200 字で作成してください。

- スタッフ ID: A-001
- 売上: ¥850,000(前月比 +8%)
- 指名率: 72%(店舗平均 65%)
- リピート率: 68%(店舗平均 60%)
- 勤怠: 出勤 22 日、遅刻 0 回、欠勤 0 回
- 今月の目標: カラー新技法の習得、達成

条件:
1. 数字に基づく事実を先に書く
2. 達成した点を 1 つ示す
3. 次月の改善提案を 1 つ示す
4. 断定的な人格評価や、事実にない内容を入れない

AI の出力は、文章のたたき台です。店長が元データと照合し、表現を調整してから使います。

面談の準備を短縮する

面談記録をスプレッドシートに保存しておくと、前回の内容を振り返りやすくなります。AI に渡す場合は、本人の同意や社内ルールを確認し、個人を特定できる情報を減らしてください。

AI には、次のような整理を依頼できます。

フィードバック文を整える

フィードバックは、「事実」「評価」「次の期待」の順にすると伝わりやすくなります。AI に構成を整えさせても、最終的な伝え方は店長が判断します。

注意: AI に人事評価を決定させないでください。出力には誤りや偏った表現が含まれる可能性があります。最終判断は店長またはオーナーが行い、本人への説明も人が担当します。

次は、月次データを集計し、Slack に通知する手順を確認します。

GAS で月次レポートを作る

ここでは、Google スプレッドシート、GAS、Slack を使った基本構成を説明します。設定時間は、データの準備を含めて約 120 分です。

ステップ 1: スプレッドシートを作る(20 分)

次の 3 シートを作成します。

シート名役割主な列
raw_reservations予約・売上の元データ予約日、スタッフ ID、指名フラグ、売上、客単価
raw_attendance勤怠の元データ日付、スタッフ ID、出勤、退勤、遅刻、欠勤
monthly_report月次集計結果スタッフ ID、売上、指名率、リピート率、勤怠評価

1 行目を見出しにし、2 行目以降へデータを入力します。氏名を使う場合は、アクセス権限を限定してください。

ステップ 2: 集計スクリプトを作る(40 分)

スプレッドシートに紐づく Apps Script を開き、次のコードを貼り付けます。サンプルは売上と指名率の集計です。リピート率と勤怠評価は、店舗の定義に合わせて追加します。

function aggregateMonthlyReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const reservationsSheet = ss.getSheetByName('raw_reservations');
  const reportSheet = ss.getSheetByName('monthly_report');

  if (!reservationsSheet || !reportSheet) {
    throw new Error('必要なシートが見つかりません。');
  }

  const reservations =
    reservationsSheet.getDataRange().getValues();

  const staffStats = {};

  for (let i = 1; i < reservations.length; i += 1) {
    const [date, staffId, isDesignated, sales] = reservations[i];

    if (!staffId) {
      continue;
    }

    if (!staffStats[staffId]) {
      staffStats[staffId] = {
        sales: 0,
        designated: 0,
        total: 0
      };
    }

    staffStats[staffId].sales += Number(sales) || 0;
    staffStats[staffId].total += 1;

    if (isDesignated === 'TRUE' || isDesignated === true) {
      staffStats[staffId].designated += 1;
    }
  }

  const output = [
    ['スタッフ ID', '売上', '指名率', 'リピート率', '勤怠評価']
  ];

  Object.keys(staffStats).forEach((staffId) => {
    const stats = staffStats[staffId];
    const designatedRate = stats.total > 0
      ? `${(stats.designated / stats.total * 100).toFixed(1)}%`
      : '0.0%';

    output.push([
      staffId,
      stats.sales,
      designatedRate,
      '未集計',
      '未集計'
    ]);
  });

  reportSheet.clearContents();
  reportSheet
    .getRange(1, 1, output.length, output[0].length)
    .setValues(output);
}

このコードは、予約データの空行を無視し、指名率が 0 件でもエラーにならないようにしています。実際の運用では、対象月の判定やリピートの定義も追加してください。

ステップ 3: Slack 通知を設定する(20 分)

Slack の Incoming Webhook を用意し、GAS のスクリプトプロパティに保存します。Webhook URL はソースコードに直接書きません。

function notifySlack() {
  const webhookUrl =
    PropertiesService.getScriptProperties()
      .getProperty('SLACK_WEBHOOK_URL');

  if (!webhookUrl) {
    throw new Error('SLACK_WEBHOOK_URL が設定されていません。');
  }

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const reportSheet = ss.getSheetByName('monthly_report');
  const report = reportSheet.getDataRange().getValues();

  let message = ':bar_chart: *今月の月次レポート*\\n\\n';

  for (let i = 1; i < report.length; i += 1) {
    const [staffId, sales, designatedRate, repeatRate, attendance] =
      report[i];

    message += `• *${staffId}*: 売上 ¥${Number(sales).toLocaleString()} / 指名率 ${designatedRate} / 勤怠 ${attendance}\\n`;
  }

  UrlFetchApp.fetch(webhookUrl, {
    method: 'post',
    contentType: 'application/json',
    payload: JSON.stringify({ text: message })
  });
}

全スタッフの評価情報を一つのチャンネルへ送ると、他スタッフの情報まで見える可能性があります。個人情報保護の観点から、管理者限定チャンネルや個別通知を検討してください。

ステップ 4: トリガーを設定する(10 分)

GAS のトリガー画面で、次の設定を行います。

集計後に通知するには、集計と通知を順番に呼び出す関数を作る方法が分かりやすいです。

function runMonthlyReport() {
  aggregateMonthlyReport();
  notifySlack();
}

トリガーの関数を runMonthlyReport に変更し、初回は手動で実行して権限を承認します。

ステップ 5: 動作確認と運用ルールを決める(30 分)

最後に、テストデータで一連の動作を確認します。

失敗パターン: 欠損値や空行を想定しないコードは、月途中の実行で止まることがあります。実データを入れる前に、空欄、数値以外の文字、スタッフ ID の誤りを含むテストを行ってください。

費用の目安: Google スプレッドシートと GAS は、既存の Google アカウントで使える範囲なら追加費用なしで始められます。Slack も無料プランがありますが、履歴保存や管理機能はプランによって異なります。利用前に各サービスの料金と機能を確認してください。

次は、個人情報と評価制度を安全に運用するための注意点です。

法律・運用面で注意すること

勤怠や評価のデータは、スタッフの働き方に関わる情報です。閲覧範囲、保存期間、評価への使い方を事前に決めておきます。

顧客情報とアクセス権限を管理する

予約データに顧客名や来店履歴が含まれる場合、評価集計に不要な情報は取り込まないでください。スプレッドシートは店長やオーナーなど、必要な人に限定して共有します。

Slack 通知には、顧客名や詳細な施術履歴を載せない運用が安全です。スタッフ別の評価を送る場合も、閲覧者を限定してください。

評価基準を先に説明する

評価項目、計算方法、面談時期を、就業規則や評価規程などに整理します。制度を変更するときは、スタッフへの説明と必要な手続きを行ってください。

労務上の判断が関わる場合は、社会保険労務士などに相談すると、店舗の状況に合った運用を検討しやすくなります。

AI の出力をそのまま使わない

AI が作った評価コメントには、誤った事実や不適切な表現が含まれる可能性があります。元データと照合し、店長が修正してから本人へ伝えてください。

法的注意: 個人情報の扱いや評価制度の変更には、店舗の契約や就業規則が関わります。個別の判断は、社会保険労務士や弁護士などの専門家へ確認してください。

次は、売上と人件費を組み合わせた、実際の評価シナリオを見ていきます。

人件費と売上を組み合わせた評価シナリオ

売上だけでなく、人件費と労働時間を合わせて見ると、店舗運営の状況を把握しやすくなります。ただし、この数字だけでスタッフの価値を決めないことが重要です。

試算の前提

計算例

1 日あたりの総労働時間は、4 名が 1 日 8 時間働く前提で 32 時間です。月 22 日なら、月間総労働時間は 704 時間になります。勤務実態や休憩時間によって変わるため、実データで置き換えてください。

スタッフ売上労働時間1 時間あたり売上人件費(推定)人件費率編集部の見方
A(店長)¥900,000176 時間約 ¥5,114¥320,00036%管理業務も含めて確認
B(中堅)¥750,000168 時間約 ¥4,464¥280,00037%主力として確認
C(若手)¥550,000176 時間約 ¥3,125¥240,00044%育成状況も確認
D(新人)¥300,000168 時間約 ¥1,786¥220,00073%成長目標と併せて確認

編集部メモ: 新人の人件費率が高くても、直ちに「貢献が低い」とは判断できません。研修、接客、補助業務、今後の成長を合わせて確認し、半年後の目標を本人と話し合いましょう。

評価会議で話す内容

労働生産性は店舗運営を見るための材料です。スタッフの評価には、勤怠、成長、チームへの貢献も加えてください。

次は、導入前に確認したい質問へ回答します。

よくある質問

Q1. 予約システムが CSV 出力に対応していない場合は?

まずはサービス提供企業へ、CSV 出力やデータ連携の可否を確認します。対応していなければ、Google フォームで必要な項目を入力する方法もあります。API 連携を使う場合は、仕様と利用料金を確認してから設計してください。

Q2. 勤怠データはどのように取得しますか?

紙の出勤簿を使っている場合は、Google フォームで出勤、退勤、遅刻、欠勤を入力する方法が低コストです。勤怠管理サービスを使っている場合は、出力した CSV を raw_attendance シートへ取り込みます。

Q3. Slack の Webhook URL はどこで取得しますか?

Slack のアプリ設定から Incoming Webhooks を有効にして取得します。ワークスペースによっては管理者の承認が必要です。URL は秘密情報のため、GAS のスクリプトプロパティに保存し、コードへ直接書かないでください。

Q4. 評価会議の頻度はどのくらいが適切ですか?

月 1 回の短い振り返りと、年 2 回の本評価を組み合わせる方法があります。月次では数値を確認し、半年ごとに接客、育成、キャリア目標を話し合うと運用しやすくなります。

Q5. スタッフに評価データをどこまで公開しますか?

本人の評価データは、評価項目と根拠を含めて説明できる状態にします。他スタッフのデータは閲覧させないでください。Slack では全体チャンネルを避け、管理者限定または個別通知を検討します。

Q6. AI による評価コメント作成には、どのサービスを使えばよいですか?

ChatGPT や Claude など、文章作成に使えるサービスがあります。料金や入力データの扱いはサービスごとに異なります。個人情報を入力しないこと、店舗のルールに合うことを確認して選んでください。

Q7. 導入後に運用が止まった場合は?

最初から全スタッフ分を自動化せず、1〜2 名で 1 か月試します。集計結果、入力負担、面談での使いやすさを確認してから対象を広げると、修正しやすくなります。

運用のヒント: 月 1 回、「入力に時間がかかりすぎないか」「評価項目が重複していないか」「スタッフが根拠を理解できるか」を確認してください。制度は、現場の声を反映しながら調整します。

次は、明日から始めるための手順をまとめます。

まとめ

美容室のスタッフ評価は、売上だけでなく、指名、リピート、勤怠、接客、成長を分けて見ると、面談の根拠を整理しやすくなります。GAS と Google スプレッドシートを使えば、既存の Google アカウントで集計の仕組みを試せます。

明日から始める 3 ステップ

  1. シートを作る: 元データ 2 枚と月次レポート 1 枚を用意する
  2. 集計を試す: テストデータで売上と指名率を確認する
  3. 通知を試す: Slack の閲覧範囲を決め、テスト通知を送る

評価制度を段階的に整える

AI は下書きに限定する

AI に評価コメントの文章構成を作らせると、店長の準備を助けられます。ただし、元データとの照合、表現の確認、本人への説明は人が行ってください。

運用前に確認すること

編集長からのメッセージ: 最初から完璧な評価制度を作る必要はありません。まずは 1 か月分の売上、指名率、勤怠を集計し、面談で使えるかを確かめてください。店長の作業時間とスタッフの納得感を見ながら、少しずつ項目を増やしていきましょう。

Mira / AI経営ラボ 編集長