🚸 操作マニュアル

旗振りシフト割当てツールの使い方

🏠 ホーム | 🎯 シフト割当て | 🧹 データ検証 | 📝 アンケート例 | ⚙️ GAS(Google Apps Script)設定

📚 ツールの概要

保護者アンケート結果を基に、旗振り・挨拶当番のシフトを自動で割当てるWebツールです。

📊
Excel対応

Excel入出力

自動割当て

希望を考慮

⚖️
公平性

回数を平準化

🔒
ローカル処理

データ送信なし

📝 アンケートの準備 (Googleフォーム設定)

本ツールは、以下の形式で作成されたGoogleフォームの結果(Excel形式)に最適化されています。誤動作を防ぐため、推奨設定に従ってアンケートを作成してください。

✅ 必須項目: 参加可能回数、第1希望(場所)、氏名
📌 参加意思の判定: 「第1希望」が入力されていれば参加意思ありと判定されます。別途「参加意思」の質問は不要です。
⚠️ 特に注意:
  • 参加可能回数は必須入力です。 空欄の場合はエラーになります
  • 免除を希望する場合は、参加可能回数に「免除希望」と記入してください

📝 改善版アンケート項目 (コピー用)

以下の構成でGoogleフォームを作成することを推奨します。この設問文を使用すれば、ツールが自動的に列を認識します。


セクション1: 基本情報

<1-1>お子さまの現在の学年を選択してください【必須】

<1-2>お子さまの現在のクラスを選択してください【必須】

<1-3>回答者(保護者)の氏名を教えてください【必須】

※姓と名を続けて入力してください(例: 山田太郎)

セクション2: 参加可能回数

<2-1>期間中の参加可能回数をご回答ください【必須】

※最低1回はご参加をお願いいたします
選択肢: 1回 / 2回 / 何回でも(週1回程度を上限として割り当てさせていただきます) / 免除希望

セクション3: 参加できない特定の日付

<3-1>参加できない特定の日付があれば入力してください【任意】

※学校行事や私用などで、絶対に参加できない日があれば入力してください。
※自由記述で「、」や「,」で区切って入力(例: 2025/5/20, 2025/6/15)

セクション4: 参加可能な条件(曜日・月)

⚠️ 重要: チェックが入っていない曜日・月には割当てられません。
いつでも参加可能な場合は、すべての選択肢にチェックを入れてください。

<4-1>参加可能な曜日をすべて選択してください【必須】

選択肢: □月 □火 □水 □木 □金

<4-2>参加可能な月をすべて選択してください【必須】

選択肢: □4月 □5月 □6月 □7月 □9月 □10月 □11月 □12月 □1月 □2月 □3月

<4-3>特に「この日しか参加できない」という日付があれば入力してください【任意】

※特定の日付しか参加できない場合のみ入力
※ここに入力があると、曜日・月の条件に関わらずその日のみが対象になります
※プルダウンから選択

セクション5: 希望場所

<5-1>ご希望する旗当番の場所を選択してください(第1希望)【必須】

※プルダウンから選択

<5-2>ご希望する旗当番の場所を選択してください(第2希望)【任意】

※記入する場合は、第1希望と異なる場所を選択してください

<5-3>ご希望する旗当番の場所を選択してください(第3希望)【任意】

※記入する場合は、第1・第2希望と異なる場所を選択してください

<5-4>ご希望する旗当番の場所を選択してください(第4希望)【任意】

※記入する場合は、第1~第3希望と異なる場所を選択してください
【注意事項】
・第1希望のみの場合、割当てが困難になる可能性があります
・希望地点を増やすと、より割当てられやすくなります
・第5希望まで対応可能です

セクション6: 追加対応

<6-1>各旗振り地点に欠員が生じた場合、参加可能回数を超えて追加でご対応いただけますか?【必須】

選択肢:
- はい
- いいえ
📌 追加対応の上限について:
「はい」と回答された方は、欠員時に参加可能回数と同じ回数まで追加で対応していただく場合があります。
例:参加可能回数が「2回」の場合 → 最大で合計4回まで割当てられる可能性があります。

セクション7: その他

<7-1>その他旗振り活動に関するご意見や連絡事項等がございましたらお知らせください【任意】

📁 必要なファイル

ファイル名 内容 形式
旗振りシフト日と場所.xlsx 日付と場所のテンプレート
Excel (.xlsx)
アンケートの回答.xlsx 保護者の希望データ
Excel (.xlsx)
⚠️ 重要: 旗振りシフト日と場所の場所名とアンケートの希望場所は完全に一致させてください。不一致がある場合、エラーが表示されます。
📌 複数人体制の設定:
1地点に複数名を配置する場合は、シフト表の地点名に「(N人体制)」を付けてください。
  • 例: 「正門前(2人体制)」「交差点A(2人体制)」
  • アンケートでは定員表記なしの「正門前」「交差点A」で希望場所を選択します
  • 定員表記がない地点は自動的に1名体制として扱われます
  • 出力ファイルでは複数名がカンマ区切りで表示されます

🔧 使い方

1
ファイルを読み込む

「旗振りシフト日と場所」と「アンケート回答」のExcelファイルをそれぞれ読み込ませます。

2
データを確認する

プレビュー画面で読み込まれたデータを確認します。

3
自動割当てを実行

「シフトを自動割当て」ボタンをクリックします。
デフォルトでは推奨ロジック「全員最低1回保証」が選択されています。
他のロジックを使用したい場合は「詳細設定を表示」をクリックして選択できます。

4
結果を確認・出力

割当て結果を確認し、「Excel出力」でダウンロードします。
「割当て集計」タブで各人の回数を確認できます。

✅ 割当てルール

ルール 説明
NG条件 「参加できない」と回答した日・曜日・月は最優先で除外(絶対不可)
参加可能回数 原則、回答した参加可能回数以内で割当て(追加対応可の人は例外)
希望場所 第1~第5希望の場所のみに割当て(第4・第5希望は任意)
参加可能月・曜日 チェックが入っている月・曜日のみ割当て可能(チェックがない場合はNG)
特定参加可能日指定 特定参加可能日が指定されている場合、その日のみに割当て
同日制限 同一日に複数地点への割当てを禁止
平準化 参加可能回数が少ない人を優先的に割当て
何回でも対応 「何回でも」選択者は回数無制限で割当て。ただし前後NG期間で間隔を確保
プレ割当て シフト表に既に文字(名前等)が入力されている枠は、割当て対象外として維持
前後NG期間制約 同一人物が指定日数以内に連続して割当てられることを防止(デフォルト7日、詳細設定で変更可能、「0」で無効化)
複数人体制 地点名に「(N人体制)」を含めると、その地点に複数名を割当て可能。例:「正門前(2人体制)」

📊 結果表示機能

割当て集計タブ

「割当て集計」タブでは、各保護者への割当て状況を一覧で確認できます。

機能 説明
参加可能回数列 各保護者がアンケートで回答した参加可能回数を表示
割当て回数列 実際に割当てられた回数を表示
上限超過ハイライト 参加可能回数を超えた割当てがある場合、該当行が赤くハイライトされ⚠️マークが表示されます
同姓同名対応 同姓同名・同学年の保護者がいる場合、自動的に番号(例:田中太郎_1年(2))が付与されます
💡 ヒント: 上限超過のハイライト表示は、アンケートデータに誤りがないか確認するのに役立ちます。赤くハイライトされた行がある場合は、元のアンケート回答を確認してください。

📊 結果サマリーの見方

割当て実行後に画面上部に表示される、各カードの数字の意味は以下の通りです。

項目 説明 目安・見方
有効回答者数 アンケートに回答した人のうち、免除希望者などを除いた「シフトに入れる人数」です。 -
参加可能回数合計 有効回答者が「この回数ならやってもいい」と申告した回数の合計です。
※「回数無制限」と答えた人の分は含まれません。
これが「供給可能な労働力」の最低ラインです。
この数字が「総枠数」より少ない場合、そもそも人手が足りていない可能性があります。
総枠数 (必要シフト) 学校側が求めているシフトの総数です。
場所数 × 日数 で計算されます。
これを全て埋めることが「ゴール」です。
実割当て合計 実際にシフト表に名前が書き込まれた回数の合計です。
※「充足率」も併記されます。
-
未割当て (不足枠) 最終的に埋まらなかった枠の数です。 「あと〇枠の人手が必要」 という追加募集の目安になります。

⚙️ 割当てロジックの詳細

このツールは、以下のルールに基づいて自動的にシフトを割当てます。

1. 基本的な割当て条件

条件 説明
希望場所のみ 参加者の「第1~第3希望」に含まれている場所にのみ割当てます。希望していない場所には絶対に割当てられません。
参加可能回数(原則) 原則として「参加可能回数」を超えて割当てることはありません。
※ただし、「欠員時の追加対応」に「はい」と回答した方は、参加可能回数の2倍まで割当てられる場合があります(例:2回希望→最大4回まで)。
同日重複防止 同じ日に同じ人が複数の場所に割当てられることはありません。
参加可能月のみ 「参加可能な月」としてチェックされた月のシフトにのみ割当てます。
※チェックがない月には割当てられません。
参加可能曜日のみ 「参加可能な曜日」としてチェックされた曜日のシフトにのみ割当てます。
※チェックがない曜日には割当てられません。
特定参加可能日優先 「特定の参加可能日」が指定されている場合、その日のみに割当てます。月・曜日の条件よりも優先されます。
前後NG期間制約 同一人物が指定日数以内に連続して割当てられることを防止します。
デフォルトは7日ですが、「詳細設定」で0~30日の範囲で変更できます。
「0」に設定するとこの制約は無効になります。

2. 優先順位の決定方法

📌 割当ての基本戦略
  • 候補者が少ないシフトから優先的に埋める - 誰も来られないシフトを確実に埋めます
  • より多くの選択肢がある人よりも、選択肢が少ない人を優先 - 融通が利かない人を先に割当てます
  • 割当て回数が少ない人を優先 - 公平性を保つため、回数を平準化します
  • 希望順位を考慮 - 第1希望 > 第2希望 > 第3希望の順でスコアを付けます

3. 参加可能回数の必須入力

⚠️ 重要な変更点(2025年12月更新)
参加可能回数は必須入力になりました。以下のルールが適用されます:
  • 未入力の場合: エラーとして扱われ、割当て対象外になります(無制限扱いはされません)
  • 「免除希望」と記入: 割当て対象外となり、画面・Excel出力にも表示されません
  • 「期間中5回」などのテキスト形式: 自動的に数値(5回)が抽出されます
  • 0回と入力: エラーとして扱われます(参加しない場合は「免除希望」と記入)

4. アンケートヘッダーの柔軟性

✨ 改善点(2025年12月更新)
アンケートのヘッダー(質問文)は、番号(<1-1>、<2-1>など)に依存しません
以下のキーワードが含まれていれば自動的に認識されます:
  • 参加可能回数:「参加可能回数」または「希望回数」(「追加」「欠員」を含む場合は追加回数として認識)
  • 参加可能月:「月」+「希望」「選択」「参加可能」のいずれか
  • 参加可能曜日:「曜日」+「希望」「選択」「参加可能」のいずれか
  • 特定の参加可能日:「特定」「特に」または「日」+「希望」「参加可能」のいずれか
  • NG条件:「NG」「参加できない」「不参加」+「日」「曜日」「月」(例:「参加できない日」「NG曜日」)
  • 第1~3希望:「第1希望」「第2希望」「第3希望」(全角・半角どちらでもOK)
  • 追加対応:「追加」または「欠員」を含むヘッダー(「はい/いいえ」の回答を判定)
  • 学年:「学年」
  • 氏名:「氏名」「名前」、または旧形式の「姓」「名」別カラム(どちらにも対応)
  • クラス:「クラス」または「組」
  • 備考・自由記述:「備考」「自由」「その他」「連絡」のいずれか

5. 全員最低1回保証ロジック(推奨)の特徴

本ツールの標準ロジックでは、以下のメリットがあります。

✅ メリット
  • 公平性の大幅向上: 「1回も割当てられない」という不満を最小化し、全員が最低限の貢献をする機会を得られます。
  • 参加意欲の向上: 「希望を出しても割当てられないかも」という不安を解消し、「最低1回は確実」という安心感を提供します。
  • 説明が容易: 「免除希望以外は全員1回以上」という明確なルールにより、運営側の不公平感に対する説明負担を軽減します。
⚠️ 注意点
  • 参加可能回数について: 全員への「1回目の割当て」を最優先するため、一部の方の参加可能回数(2回以上)が満たされない場合があります。
  • 制約が厳しい人の優先度: 第1パスでは公平に1回ずつ割当てるため、必ずしも制約が厳しい人が最優先されるわけではありません。(ただし処理順序は制約順です)
  • 割当て0回の可能性: 条件が極端に厳しく、入れるスロットが1つもない場合は、やむを得ず0回になる可能性があります。(この場合、警告が表示されます)

6. 割当てロジックの選択(詳細設定)

通常は推奨ロジック「全員最低1回保証」がデフォルトで選択されています。
「詳細設定を表示」をクリックすると、他のロジックも選択できます。

ロジック 重視する点 こんな時に使う
⭐ 全員最低1回保証(推奨) 公平性 ほぼ全ての場合に推奨。「希望したのに0回」を防ぐ
参加者優先 制約が厳しい人 「この日しかダメ」な人を確実に割当てたい場合
標準 スロット充足 人手不足で空き枠を埋めることが最優先の場合
日付順 シンプルさ 結果比較やデバッグ用
📌 注意: 全てのロジックで「前後NG期間制約」が適用されます。 デフォルトは7日間ですが、詳細設定で0~30日の範囲で変更できます(「0」で無効化)。

📊 割当て結果の表示について

割当て0回の参加者も表示されます

✨ 改善点(2025年12月更新)
条件を提出したが割当てが0回だった参加者も、画面とExcel出力の両方に表示されるようになりました。
これにより、以下のメリットがあります:
  • 参加可能回数合計の一致: 画面表示とExcel出力の参加可能回数合計が一致します
  • 未割当て者の把握: 誰が割当てられなかったかが一目でわかります
  • 追加募集の計画: 未割当て者への個別連絡や追加募集の判断材料になります
※ 「免除希望」と記入した人は表示されません

参加可能回数合計の表示

画面とExcel出力の「参加可能回数合計」には、免除希望者を除く全参加者の参加可能回数が含まれます。
割当て0回の人の参加可能回数も含まれるため、「実割当て合計」と一致しない場合があります。

❓ よくある質問

Q: 場所名不一致エラーが出る

旗振りシフト日と場所のヘッダーとアンケートの希望場所の選択肢を完全に一致させてください。全角/半角、スペースの有無も確認してください。

Q: 追加募集(再割当て)を行いたい/手動で枠を埋めておきたい

前回作成したシフト表(途中まで埋まった状態)を「旗振りシフト日と場所」として読み込ませてください。
ツールは文字が入っているセルを「既に決定済み」と判断して維持し、空欄のセルだけを対象に、新しいアンケート回答を使って追加割当てを行います。
これを利用して、「1次募集で埋まらなかった枠を2次募集で埋める」といった運用が可能です。

Q: 割当てが0になる

上記の場所名不一致か、参加可能月・曜日・日付の条件が厳しすぎる可能性があります。アンケート回答を確認してください。

Q: データはサーバーに送信される?

いいえ。すべての処理はブラウザ内で完結します。データは外部に送信されません。

Q: 参加可能回数の合計は足りているのに、埋まらない枠があるのはなぜ?

「需要と供給のミスマッチ」が原因と考えられます。
数の上では足りていても、以下の理由でマッチングできない場合があります。

対策: 「どの場所でも可」という人を増やすか、特定の不人気な場所・曜日に限定して追加募集を行う必要があります。

📧 リマインドメール機能(オプション)

割当てられた保護者へ自動で指定した日時に、リマインドメールを送信する機能です。
Google Apps Script(GAS)を使用して無料で運用できます。

📅
毎日自動実行

指定時刻に実行

📨
個別送信

担当者ごとにメール

📍
資料添付

地図などを自動添付

🗂️
自動整理

送信済みをアーカイブ

事前準備

✨ かんたん設定ツールがあります

設定コードを自動生成するツールを用意しました。
プログラム(CONFIG)を直接編集する必要がなく、安全に設定を作成できます。

⚙️ GAS設定ジェネレーターを開く

セットアップ手順

1
データを準備

Googleドライブ内の「旗振り担当日リマインドメール自動送信」スプレッドシートを開き、以下のデータを貼り付けてください:

  • 「アンケート回答」シート: アンケート回答結果の生データをそのまま貼り付け
  • 「シフト結果」シート: 旗振りシフトツールで生成したシフト表をそのまま貼り付け

※「送信ログ」シートは自動作成されます

2
設定コードを生成

GAS設定ジェネレーターを開き、 シート名や列位置などを入力して「コードを生成」をクリックします。
生成されたコードを「コピー」ボタンでコピーしてください。

3
Apps Scriptを開く

スプレッドシートのメニューから 「拡張機能」→「Apps Script」 を選択します。

4
コードを貼り付け

エディタが開いたら、もともと入っているコード(function myFunction()...など)を全て削除します。
その後、ジェネレーターでコピーしたコードを貼り付け(Ctrl+V)し、保存(Ctrl+S)してください。

5
シミュレーションでテスト

まず simulateTomorrow 関数を実行して、データが正しく読み取れているか確認してください。
「表示」→「ログ」 で照合結果を確認できます(メールは送信されません)。

6
トリガーを設定

シミュレーション結果に問題がなければ、createDailyTrigger 関数を一度実行してください。
これで毎日指定した時刻(デフォルトは担当前日の20時)に自動実行されます。

7
権限を承認

初回実行時にGoogleアカウントの権限承認画面が表示されます。
「詳細」→「(安全でないページに移動)」→「許可」をクリックしてください。

送信されるメールの例

件名: 【リマインド】明日は旗振り当番です
山田太郎 様 明日は旗振り当番の日です。 ━━━━━━━━━━━━━━━━━━━━━━ 📅 日付: 2026/02/05 📍 場所: 正門前 ━━━━━━━━━━━━━━━━━━━━━━ お忙しいところ恐れ入りますが、 ご対応のほどよろしくお願いいたします。 ※このメールは自動送信されています。 ※ご都合が悪くなった場合は、PTA担当者までご連絡ください。 -- PTA旗振りシフト管理システム
⚠️ 注意:
  • シフト結果の氏名に「_2年」等のサフィックスが付いている場合、自動で除去して照合します
  • 送信済みメールは「旗振りリマインド」ラベルを付けて自動アーカイブされます
  • 二重送信防止のため、送信ログをチェックしてから送信します
  • 添付ファイルについて: GAS設定ジェネレーターで指定したファイル名(末尾一致)をスプレッドシートと同じフォルダから自動検索します(例:「R8_旗振り地点について.pdf」など、年度ごとにファイル名が変わっても対応可能です)。

📋 関数一覧

関数名 説明
sendReminders() 📧 メイン処理: 明日の担当者にリマインドメールを送信(トリガーから自動実行)
createDailyTrigger() 自動送信を開始: 毎日20時に自動実行するトリガーを設定
deleteDailyTrigger() 🗑️ 自動送信を停止: トリガーを削除して自動送信を解除
simulateTomorrow() 🔍 明日の送信をシミュレーション(メール送信なし、ログで確認)
simulateToday() 🔍 今日の送信をシミュレーション(メール送信なし)
testSendReminders() 🧪 今日の担当者に実際にテストメール送信
💡 自動送信を停止するには:
deleteDailyTrigger() 関数を実行すると、毎日の自動送信を停止できます。
再度開始したい場合は createDailyTrigger() を実行してください。