月次シフト管理をLINEで完全自動化(旅館業)

月次シフト管理をLINEで完全自動化【旅館業・完全ガイド】
希望収集から確定通知・欠員対応・月次集計まで一本化する方法

STEP1〜5の全体像+スタッフ向け提出手順+Googleスプレッドシート設定まで、この1記事で完結

シフト管理 LINE自動化 Lメッセージ 旅館業 スプレッドシート連携 完全ガイド
「毎月のシフト希望をLINEで個別に聞いて回るのが大変」「シフト確定の連絡が漏れることがある」「急な欠員のフォローが間に合わない」——旅館・ホテルのアルバイト・パートのシフト管理でよくある悩みを、LINEとLメッセージを使って月次フローごと自動化する方法を、STEP1〜5に分けて解説します。あわせて、スタッフがシフト希望を送る手順や、Googleスプレッドシートとの連携設定まで、この1記事で一通り分かるようにまとめました。パソコン操作が苦手な方でも進められるよう、スマホ・PCの画面イラストを見ながら確認できます。

月次シフト管理フロー全体像

Lメッセージを使った月次シフト管理は以下5ステップで毎月自動で回ります。担当者が手動で動くのは「シフト表の確定」だけです。

STEP 1→毎月15日頃:全スタッフにシフト希望収集メッセージを一斉自動配信
STEP 2→締切後(毎月23日頃):担当者がシフト確定後、個人別に確定通知を配信
STEP 3→出勤前日18時・当日朝7時:自動リマインドで無断欠勤を防止
STEP 4→随時:急な欠員発生時に全スタッフへ一斉募集配信・ボタン手挙げ
STEP 5→通年:全ステップのデータをGoogleスプレッドシートに自動記録・集計

この記事の読み方

まずSTEP1〜5の流れをつかみたい方は各STEPの冒頭(LINE画面イラスト)だけを追ってください。実際に作りたい方は、各STEPの「スプレッドシート連携の設定手順」や「Lメッセージ設定のポイント」まで読み進めると、そのまま構築できます。

STEP 1

シフト希望の収集

毎月15日頃、全スタッフのLINEに希望収集メッセージが自動で届きます。スタッフはボタンをタップするだけで希望シフトを提出でき、締切前には未回答者だけに自動催促が届きます。紙・メール・電話での個別確認が完全に不要になります。

  • 紙・メール・電話での個別確認が完全に不要になる
  • 未回答者だけを自動検出して締切前リマインドを配信
  • 回答データはGoogleスプレッドシートに自動記録

希望収集メッセージ → スタッフの回答 → 受付完了の流れ

毎月15日にLメッセージが全スタッフのLINEへ自動配信します。スタッフは4週分の早番・遅番ボタンをタップするだけで希望提出が完了します。締切前には未回答者だけに自動催促が届き、提出漏れをゼロにします。

🏨 KSR旅館 シフト管理 📅 毎月15日 自動配信 ‹ 10月15日(火)⚡自動配信 🏨 お疲れさまです! KSR旅館 シフト担当です📅 来月(11月)のシフト希望を お聞かせください🙏 15:00 🏨 ⏰ 締切:10月20日(日)23:59まで 以下のボタンで希望を選んでください👇 複数週選択できます 15:00 ─── 第1週(11/1〜7)─── 🌅 早番 希望 🌇 遅番 希望 ─── 第2週(11/8〜14)─── 🌅 早番 希望 🌇 遅番 希望 ─── 第3週(11/15〜21)─── 🌅 早番 希望 🌇 遅番 希望 ─── 第4週(11/22〜30)─── 🌅 早番 希望 🌇 遅番 希望 📝 NGシフト・詳細はこちらから入力 😔 今月は出勤できません 🌅 早番 希望(第1週) 19:32 ✓✓ 🌇 遅番 希望(第3週) 19:33 ✓✓ 🏨 ✅ シフト希望を受け付けました! ありがとうございます😊 確定シフトは締切後にお送りします📅 19:33 ⚡自動 メッセージを入力 ① 希望収集メッセージ 毎月15日に全スタッフへ Lメッセージが自動配信 ② 週別ボタン4週分 早番・遅番を週ごとに タップで選択できる 複数週の選択も可能 NGシフト入力フォームも設置 ③ スタッフがタップ 選択内容が担当者と スプレッドシートへ記録 ④ 受付完了を自動返信 「確定シフトは締切後に 送ります」と自動案内

毎月15日に自動配信される希望収集メッセージ。4週分の早番・遅番ボタンをタップするだけで希望提出完了。受付完了メッセージも自動で届きます

設計のポイント:NGシフト入力フォームボタンを必ず設置しましょう。「○日だけは絶対に入れない」という細かい希望をテキストで伝えられる入口を作ることで、スタッフのストレスが下がり提出率が上がります。

締切3日前:未回答スタッフへの自動催促

締切の3日前になっても希望を提出していないスタッフだけに、自動催促メッセージが届きます。すでに回答済みのスタッフには届きません。Lメッセージがタグで自動判別して配信するため、担当者が一人ひとり確認する必要はありません。

🏨 KSR旅館 シフト管理 ⏰ 締切リマインド(未回答者のみ) 10月17日(木)締切3日前 🏨 【リマインド】シフト希望の 締切まであと3日です! まだシフト希望のご提出が 完了していません🙏 ⏰ 締切:10月20日(日)23:59 ↓ ボタンから提出できます 18:00 ⚡未回答者のみ自動配信 🌅 早番 希望 🌇 遅番 希望 📝 NGシフト・詳細入力フォーム 😔 今月は出勤できません 🌅 早番 希望(第2週) 21:14 ✓✓ 未回答者だけに催促 すでに回答済みの スタッフには届かない タグで自動判別して セグメント配信 ⚡ 担当者操作ゼロ

締切3日前になっても未回答のスタッフだけに自動催促が届きます。回答済みのスタッフには届きません。ボタンも再掲され、そのままタップして提出できます

実際のスマホ画面でわかる!月次スケジュールの流れ

「15日・17日・20日に何が起きるの?」をスマホ画面で確認しましょう。担当者がすることは何もありません。スマホを見ているだけで毎月自動で回ります。

📅 毎月のスケジュールはこの3日間だけ覚えればOK!
🟦 15日:LINEが自動で「来月のシフト希望を教えてください」と全員に送る
🟧 17日:まだ返事していない人だけに「締切3日前ですよ」と自動でリマインド
🟥 20日:締切。担当者がスプレッドシートを見てシフトを組む
15 毎月15日 希望収集を一斉自動配信 ⚡ 自動 17 締切3日前 未回答者だけに自動催促 ⚡ 自動(未回答のみ) 20 締切日(20日) 23:59 受付終了 担当者がシフト確定へ スプレッドシート 希望提出内容が タップのたびに 自動記録される 15日→17日→20日の流れがすべて自動で進む!担当者の手作業ゼロ

毎月15日の自動配信から20日の締切まで、希望収集・催促・記録がすべて自動で進みます。担当者は最後にシフト表を確定するだけです

🎉 担当者がすることは「シフトを組むだけ」

日付 LINEで自動で起きること 担当者の作業
15日 全スタッフに希望収集メッセージを自動配信 なし ✅
17日 未回答の人だけに自動催促を配信 なし ✅
20日 締切。全員の希望がスプレッドシートに自動で揃う シフト表を組む 📋

スタッフ向け:シフト希望の送り方

📱 スタッフのみなさんへ:来月のシフト希望は、LINEに届くフォームから「出勤できる日を選ぶ → 早番/遅番、または希望時間を選ぶ → 送信」の3ステップで送れます。スマホ1つで約2〜5分。この案内は、そのままスタッフに配布・掲示できます。

スタッフの提出方法は、旅館の運用に合わせて2方式から選べます。シフトが「早番・遅番の2択」で足りる旅館は方式A、時間を細かく決めたい旅館は方式Bがおすすめです。

方式A:早番・遅番の2択で選ぶ

カレンダーで出勤できる日を選び、日ごとに「🌅 早番」か「🌇 遅番」をタップ。両方タップ=「どちらでも入れます」。ボタン操作だけで完結し、スマホが苦手な方でも迷いません。

方式B:希望時間を入力する

カレンダーで出勤できる日を選び、日ごとに「9時〜15時」「終日OK」「13時以降ならOK」など希望時間を自由に入力。時間の融通が利く旅館向けで、細かい希望まで拾えます。

方式A・Bに共通する提出の流れ(4ステップ)
STEP 1→毎月15日頃に届くLINEの「📝 シフト希望を入力する」ボタンをタップしてフォームを開く
STEP 2→カレンダーから出勤できる日をタップして選ぶ(青くなる/複数日OK/もう一度タップで解除)
STEP 3→選んだ日ごとに「早番/遅番」(方式A)または「希望時間」(方式B)を入力する
STEP 4→「送信する」をタップ → LINEに「✅ 受け付けました」の自動返信が届いたら完了
スタッフへの案内のコツ:「早番でも遅番でもどちらでも入れる日は、方式Aなら早番・遅番の両方をタップ、方式Bなら『終日OK』と入力してください」と伝えておくと、担当者がシフトを組むときの調整余地が広がります。
スタッフからよくある質問(提出方法)

Q. カレンダーで間違った日を選んでしまいました

選んだ日をもう一度タップすると青が消えて選択解除できます。「次へ」をタップする前なら何度でもやり直せます。

Q. 日によって希望が違っても大丈夫ですか?

はい。日ごとに入力欄が分かれているので、1日は「早番」、4日は「遅番」というように別々に選べます。

Q. 送信したあとで内容を変更したくなりました

このLINEのトークに「11月4日の希望を早番に変更してください」とメッセージを送ってください。担当者が修正します。

Q. 締切(20日)を過ぎてしまいました

締切を過ぎるとフォームが使えなくなります。このLINEのトークに「11月○日 早番希望です」と直接メッセージを送ってください。締切3日前(17日頃)にリマインドも届きます。

スプレッドシート連携の設定手順(希望収集)

スタッフがLINEのボタンをタップした瞬間、Googleスプレッドシートに「誰が・いつ・どの週に・何を希望したか」が自動で書き込まれます。担当者はスプレッドシートを「見るだけ」でシフトが組めるようになります。所要時間は約20〜30分。一度設定すれば毎月自動で記録され続けます。

😰 連携なし
ボタン回答が担当者のLINEに個別に届くだけ。誰が何を希望したか、一つずつ手で書き写す必要がある
→
😊 連携あり
タップと同時にスプレッドシートに1行自動追加。20日の締切には全員の希望が一覧で揃っている
①スプレッドシートに見出し(タイトル行)を入力する約5分
  1. ブラウザで sheets.google.com を開き「+ 新規作成」をクリックします。
  2. 左上の「無題のスプレッドシート」をクリックし、ファイル名を 「KSR旅館 月次シフト管理」 に変更します。
  3. 画面下の左端にあるシートタブ名(初期は「シート1」)をダブルクリックし、「希望収集」に変更します。※STEP5の集計関数がこのタブ名を参照します。
  4. 1行目のA1セルをクリックし、以下の7項目を入力します(入力→Tabキーで隣のセルへ移動、を繰り返す)。
列見出し入る内容(2行目以降は自動)
A提出日時ボタンをタップした日時
BLINE名スタッフのLINE登録名
Cスタッフ名フォームで入力された本名
D第1週希望第1週(1〜7日)の早番・遅番希望
E第2週希望第2週(8〜14日)の早番・遅番希望
F第3週希望第3週(15〜21日)の早番・遅番希望
G第4週希望第4週(22〜30日)の早番・遅番希望

※ 手入力するのは1行目の見出しだけ。2行目以降はスタッフがタップするたびに自動で追加されます。1行目を選択して背景を緑にすると見やすくなります(任意)。Googleスプレッドシートは自動保存なので保存ボタンは不要です。

②LメッセージとGoogleを連携する約3分
  1. Lメッセージ管理画面の左メニュー「設定(⚙)」→「外部連携」をクリックします。
  2. 「Googleスプレッドシート」を選択します。
  3. 「Googleアカウントで連携する」ボタンをクリックし、シフト管理用のGmailでログインします。
  4. 「許可する」をクリックして完了です。

※ この「許可する」は、Lメッセージがスプレッドシートに書き込む権限を与える操作です。個人情報が外部に漏れるわけではありません。連携はLメッセージ全体で1回だけ行えば、STEP1〜5すべてで共通して使えます。

③どのボタン回答をどの列に記録するか設定する約10分
  1. Lメッセージ管理画面 →「シナリオ」→ 希望収集シナリオを開きます。
  2. 「第1週・早番ボタン」のアクション設定を開き、「スプレッドシートに書き込む」を追加して対象シート:KSR旅館 月次シフト管理/書き込む列:D列/内容:早番 希望を設定します。
  3. 同様に残り7ボタンを設定します(下表)。A列・B列(提出日時・LINE名)はLメッセージが自動記録するので設定不要です。
  4. 「保存する」をクリックして完了です。
LINEのボタン書き込む列書き込む内容
🌅 早番(第1週)D列早番 希望
🌇 遅番(第1週)D列遅番 希望
🌅 早番(第2週)E列早番 希望
🌇 遅番(第2週)E列遅番 希望
🌅 早番(第3週)F列早番 希望
🌇 遅番(第3週)F列遅番 希望
🌅 早番(第4週)G列早番 希望
🌇 遅番(第4週)G列遅番 希望
④テストして確認する約5分
  1. 自分のスマホでKSR旅館のシフト管理LINEを開き「🌅 早番 希望(第1週)」をタップします。
  2. スプレッドシートをPCで開き、D列に「早番 希望」が自動で入っているか確認します(反映に1〜2分かかる場合あり)。
  3. 「🌇 遅番 希望(第2週)」もタップし、E列に「遅番 希望」が入るか確認します。
  4. 両方確認できたら設定完了です。テストで入れたダミー行は削除しておきましょう。
完成後のスプレッドシートイメージ
提出日時LINE名スタッフ名第1週第2週第3週第4週提出状況
10/15 07:42田中さくら田中 さくら🌅 早番—🌇 遅番—✅ 提出済み
10/15 09:15鈴木太郎鈴木 太郎—🌇 遅番🌇 遅番🌅 早番✅ 提出済み
10/15 19:32佐藤さくら佐藤 さくら🌅 早番🌅 早番—🌇 遅番✅ 提出済み
10/17 21:14山田けんじ山田 けんじ🌅 早番———⚡ 催促後提出
(未提出)中村はな中村 はな————⚠ 未提出
うまくいかないときのチェックリスト □ Lメッセージのプランが外部連携対応か(スタンダードプラン以上推奨) □ GoogleアカウントへのLメッセージの「許可」が完了しているか □ ボタンと列の対応が「保存」されているか □ テストタップ後、反映に1〜2分かかる場合あり(少し待って再確認) □ 別ファイルを指定していないか(対象シートが正しいか)

STEP1 Lメッセージ設定のポイント

・毎月15日の自動配信 → Lメッセージの「定期配信」機能で日付・時刻を指定
・週別ボタンは「第1週早番」「第1週遅番」…と計8ボタンを設定
・ボタンタップ時のアクションに「提出済みタグを付与」を設定
・締切3日前の催促は「未提出タグを持つスタッフへのセグメント配信」で設定
・回答データはGoogleスプレッドシートの外部連携で自動記録

STEP 2

シフト確定・通知

担当者がシフト表を確定したら、Lメッセージのセグメント配信で各スタッフに個人名入りの確定シフトを送付します。今まで一人ひとりに電話・個別LINEでシフトを伝えていた作業が、ボタン1回で全スタッフに自動配信されます。スタッフは「確認しました」ボタンをタップするだけで既読管理が完了します。

😰 今まで(LINEなし)
田中さんに電話→「11/1は早番7時です」/鈴木さんにも個別LINEで打ち込む…全員に送り終わるまで何十分もかかる。毎月この作業が発生
→
✅ STEP2導入後
担当者がボタンを1回押すだけ。全スタッフのLINEに個人別の確定シフトが自動で届く。一瞬で全員に届く
🏨 KSR旅館 シフト管理 📋 11月 確定シフトのお知らせ ‹ 10月23日(水) 🏨 田中 さくら さん 11月の確定シフトをお知らせします📋 内容をご確認の上、 下のボタンをタップしてください👇 20:00 📋 11月 確定シフト 田中 さくら さん 第1週(11/1〜7) 11/1(金)早番 7:00〜13:00 11/4(月)早番 7:00〜13:00 11/6(水)中番 12:00〜18:00 第2週(11/8〜14) 11/9(土)遅番 17:00〜22:00 11/12(火)早番 7:00〜13:00 第3週(11/15〜21) 11/15(金)早番 7:00〜13:00 11/18(月)中番 12:00〜18:00 11/20(水)早番 7:00〜13:00 合計:8日勤務 変更希望は担当者にご連絡ください ✅ 確認しました 📝 変更希望・相談がある 20:00 ⚡自動 ✅ 確認しました 20:05 ✓✓ 🏨 確認ありがとうございます✅ 変更が必要な場合は このLINEへご連絡ください😊 20:05 ⚡自動 個人名入りで配信 「田中 さくら さん」と 個人名を入れて送る 週別・日別シフトカード その人だけのシフトが 週別にまとまって届く 合計勤務日数も 自動計算 スプレッドシートから 自動で差し込み送信 確認ボタンで既読管理 タップ → スプレッドシートに 「確認済み」が自動記録

個人名・週別日付・時間帯・合計日数入りの確定シフトカードが自動送付されます。「確認しました」ボタンのタップが既読管理の証拠になります

「自分のシフトだけ」が届きます:田中さくらさんには「田中さくらさんのシフトだけ」が届き、鈴木太郎さんのシフトは見えません。「一斉送信なのに個人別」がこの仕組みの要。担当者が一人ひとりに手動で送る必要はゼロで、プライバシーも守られます。

担当者がすることは3つだけ

①シフト表を完成させる(締切後・毎月23日頃)判断次第

STEP1で集まった希望をもとに、スプレッドシートで来月のシフト表を組みます。ここに入力した内容がそのまま各スタッフへのLINEに反映されます。

②Lメッセージから「配信する」ボタンを1回押す約1〜2分

「配信管理」→「確定シフト通知テンプレート」を選んで「配信する」を押すだけ。個人名・日付・時間帯はスプレッドシートから自動で差し込まれるので、担当者が個別に打ち込む必要はありません。

③全スタッフのLINEに届く!あとは待つだけ自動

配信した瞬間、全スタッフのスマホに確定シフトが届きます。スタッフが「確認しました」をタップすると、別タブ「確認管理」のC列に「確認済み」と自動記録されます(このタブ名もSTEP5の集計関数が参照します)。担当者は後で一覧を確認するだけです。

スプレッドシートで「誰が確認済みか」を一目で確認
スタッフ名配信日時(自動)確認ボタンの状況担当者がすること
田中 さくら10/23 20:00 配信✅ 確認済み(20:07)何もしなくてOK
鈴木 太郎10/23 20:00 配信✅ 確認済み(21:44)何もしなくてOK
山田 けんじ10/23 20:00 配信⏳ まだ未確認→ LINEで一言フォロー
佐藤 さくら10/23 20:00 配信✅ 確認済み(22:33)何もしなくてOK

緑(確認済み)は放置でOK。赤(未確認)の人だけLINEで一言送ればOKです。「変更希望・相談がある」ボタンが押された場合は担当者のスマホに自動アラートが届き、LINEチャットで直接やり取りして解決できます(電話不要)。

Q. 全員に同じメッセージではなく、本当に個人別に届きますか?

はい。田中さくらさんには「田中さくらさんのシフト」、鈴木太郎さんには「鈴木太郎さんのシフト」が届きます。他のスタッフの情報は届かないのでプライバシーも守られます。

Q. スタッフが「確認しました」を押し忘れたら?

スプレッドシートの確認状況が「⏳ 未確認」のままになります。担当者が未確認のスタッフへ「シフト確認しましたか?」と一言送ってフォローします。

STEP 3

出勤リマインド

確定シフトをもとに、出勤前日の18時と当日朝の7時に自動でリマインドが届きます。スタッフの出勤忘れ・無断欠勤を防ぎます。担当者は最初に一度だけ設定すれば、あとは毎月・毎日自動で送られ続けます。

🏨 KSR旅館 シフト管理 ⏰ 出勤前日リマインド 11/3(日)18:00 ⚡自動 🏨 【明日の出勤リマインド🏨】 田中 さくら さん 📅 11月4日(月) 🕖 早番 7:00〜13:00 📍 バックヤード入口から入館 制服:更衣室にご準備しています ご不明な点はこのLINEへ😊 18:00 よろしくお願いします! 21:03 ✓✓ ✅ 明日の出勤を確認しました 😢 急遽出勤できなくなりました 「出勤できない」タップ時 → 担当者LINEに緊急アラート → STEP4の欠員募集が自動起動 🏨 KSR旅館 シフト管理 ☀️ 出勤当日リマインド 11/4(月)07:00 ⚡自動 🏨 おはようございます☀️ 本日の出勤をよろしくお願いします! 📅 本日 11月4日(月) 🕖 早番 7:00〜13:00 📍 バックヤード入口 集合 スタッフ一同お待ちしています🏨 気をつけてお越しください😊 07:00 今向かっています! 06:48 ✓✓ ✅ 今日の出勤 準備OK! 😢 本日出勤できなくなりました 出勤チェックイン機能 「準備OK」タップ → スプレッドシートに 出勤確認日時が自動記録される

(左)前日18時:集合場所・時間帯入りのリマインドが届き、「出勤を確認」ボタンで応答。(右)当日朝7時:「おはようございます」の一言+チェックイン機能で出勤確認が自動記録されます

前日リマインドと当日リマインドの違い

比較項目⏰ 前日リマインド(18:00)☀️ 当日リマインド(7:00)
配信タイミング出勤前日の夜18:00出勤当日の朝7:00
目的出勤忘れを前もって防ぐ時間・場所の再確認・遅刻防止
返答ボタン✅ 明日の出勤を確認しました/😢 急遽出勤できなくなりました✅ 今日の出勤 準備OK!/😢 本日出勤できなくなりました
欠勤ボタン時担当者に緊急アラート(前日なので調整の時間がある)担当者に緊急アラート(当日なので即欠員募集へ)

どちらも担当者の操作ゼロで自動配信されます。前日リマインドは「明日出勤する人だけ」に届き、休みのスタッフには届きません(シフト表から自動判別)。時刻(18時・7時)はLメッセージのシナリオ設定で旅館の営業時間に合わせて変更できます。

「出勤できなくなりました」ボタンが押されたとき

①→スタッフが欠勤ボタンをタップ(「ご連絡ありがとうございます」と自動返信)
②→担当者のスマホに「🚨 ○○さんが本日欠勤」と自動アラートが届く(電話報告を待つ必要なし)
③→担当者は欠勤者に「了解しました」と返信し、STEP4の欠員募集を配信、シフト表を修正

スプレッドシート連携の設定手順(出勤管理)

3種類のボタン(前日確認・当日チェックイン・欠勤報告)がタップされるたびに、対応する列に自動記録されます。STEP2とは目的が異なるため、同じスプレッドシートファイル内に別タブ「出勤管理」を作るのがおすすめです。

①スプレッドシートに見出しを追加約5分

別タブ「出勤管理」を作り、1行目にA〜H列の見出しを入力します。

列見出し記録内容
A・Bスタッフ名/出勤日自動入力
C・D前日確認状況/前日確認日時前日ボタン
E・F当日チェックイン/チェックイン日時当日ボタン
G・H欠勤報告/欠勤報告日時欠勤ボタン
②Googleとの連携STEP1で済んでいればスキップ

連携はLメッセージ全体で1回だけ。STEP1で「連携済み」と表示されていれば操作不要です。

③〜⑤各ボタンに書き込みアクションを設定約20分
  1. 前日確認ボタン:C列に「前日確認済み」/D列にタップ日時(自動)の2アクションを追加。
  2. 当日チェックインボタン:E列に「チェックイン済み」/F列にタップ日時(自動)の2アクションを追加。
  3. 欠勤ボタン(前日・当日の両シナリオ):G列に「欠勤(前日/当日報告)」/H列にタップ日時(自動)に加えて、「担当者に通知する」アクションを必ず追加します。これを忘れると欠勤に気づけません。
色で状況が一目でわかる:完成後は、緑(前日確認+チェックイン済み=完璧)/黄(未確認=要フォロー)/白(出勤前でチェックインまだ=問題なし)/赤(欠勤報告=欠員募集へ)と、スプレッドシートの色を見るだけで全スタッフの状況が把握できます。担当者の入力は一切ありません。
STEP 4

欠員・交代募集

スタッフが急病などで当日欠勤になった場合、担当者がLメッセージから「欠員募集」を1回送るだけで全スタッフに一斉配信されます。スタッフは「入れます!」ボタンに加えて、入れる時間帯を時間単位で指定して回答することもできます。電話で一人ひとり確認する手間が不要になり、今まで30分以上かかっていた作業が5〜10分で解決します。

🚨 KSR旅館 シフト管理 【緊急】スタッフ不足のお知らせ 11月4日(月)07:15 緊急配信 🚨 【緊急】本日スタッフ不足! 本日 11月4日(月) 早番 7:00〜13:00 に 1名 不足しています! 入れる方はボタンをタップください🙏 交通費支給・まかない付き🍱 07:15 ⚡全スタッフに一斉配信 🙋 今日入れます! ▼ 入れる時間帯(複数選択可) 🌅 早番のみ 🌇 遅番も可能 🕐 時間を指定して入れます 今日は難しいです 🕐 9:00〜13:00 なら入れます 07:19 ✓✓(佐藤 さくら) 🏨 🔔 担当者へ自動アラート 佐藤 さくら さんが 9:00〜13:00 なら入れると回答✅ 確定する場合はご連絡ください 07:19 ⚡自動 佐藤さんに連絡します!ありがとう 07:20 ✓✓(担当者) 緊急欠員募集配信 担当者が1タップで 全スタッフへ一斉配信 日付・時間帯・職種を テンプレに差し込み 3パターンで回答 A:時間帯ボタン選択 B:時間を直接入力 C:今日は難しい 「一部なら入れる」も 拾える 担当者へ自動アラート 誰が・いつ・何時間帯に 入れるか自動で通知 電話確認より圧倒的に早い

緊急欠員募集→手挙げ→担当者自動アラートの一連の流れ。時間帯選択(早番のみ/遅番も可)や「時間を指定して入れます」で細かい希望まで把握でき、電話での個別確認が不要になります

スタッフの回答パターンは3種類

パターンA:時間帯ボタンで選ぶ

「🙋 今日入れます!」に加えて「🌅 早番のみ」「🌇 遅番も可」をタップ。ボタン操作だけで完結し、スマホが苦手な方でも簡単。

パターンB:時間を指定して入れます

「9:00〜13:00」など開始・終了時間を入力。「募集の全時間は無理だけど一部なら入れる」という柔軟な回答ができる。

パターンC:今日は難しいです

担当者への通知なしで完結。断りやすい環境をつくることで、回答率そのものを上げる。

パターンBの最大のメリット

今まで「全部は無理だから断った」スタッフが手を挙げやすくなる。完全に埋まらなくても、複数人の時間指定を組み合わせて被害を最小限にできる。

スタッフ名回答パターン入れる時間カバー時間
鈴木 太郎A(早番全部)7:00〜13:006時間(全部)
佐藤 さくらB(時間指定)9:00〜13:004時間(一部)
中村 はなB(時間指定)11:00〜13:002時間(一部)

担当者には全員の回答が一覧で届きます。鈴木さんに全部お願いするか、佐藤さん+中村さんの2人でカバーするか、状況を見て選べます。欠員発生から解決まで最短5〜10分、電話ゼロです。

スプレッドシート連携の設定手順(欠員管理)

別タブ「欠員管理」を作り、3パターンの回答を列ごとに記録します。パターンごとに記録先の列が分かれます。

回答記録列書き込む内容
A:今日入れます!/早番のみ/遅番も可C・D列手挙げ(全部OK/早番のみ/遅番も可)+日時
B:時間を指定して入れますE・F列フォーム入力(例:9:00〜13:00)+日時
C:今日は難しいですG・H列今日は難しい+日時(担当者通知は不要)
設定手順3パターンにアクションを設定約30分
  1. パターンA:「今日入れます!」「早番のみ」「遅番も可」の各ボタンに、C列(手挙げ内容)+D列(日時)の2アクションを設定。C列に書き込む文字だけボタンごとに変えます。
  2. パターンB:フォーム送信をトリガーに、E列(開始〜終了時間)+F列(日時)を設定。
  3. パターンC:「今日は難しいです」ボタンに、G列(今日は難しい)+H列(日時)を設定。
  4. 自分のスマホで3パターンをテストし、C・E・G列に記録されるか確認。テストデータは削除します。

※ Googleとの連携がSTEP1〜3で済んでいれば、連携操作はスキップできます。

完成後は「見るだけ」:赤行(手挙げ)=最優先で連絡/黄行(時間指定)=組み合わせ検討/グレー行(断り)=フォロー不要。担当者はスプレッドシートを見てシフト確定の判断をするだけです。
STEP 5

月次集計・連携

STEP1〜4のすべてのアクションが、Googleスプレッドシートにリアルタイムで自動記録されます。月末には「今月は何人が何日働いたか」「欠員は何件あったか」まで自動で集計され、担当者は手入力ゼロ・電卓ゼロで全体状況を把握できます。

KSR旅館 月次シフト管理シート(自動記録・全ステップ統合) スタッフ名 希望提出日時 希望シフト帯 確定シフト日 確認ボタン 前日確認 当日チェックイン 月間勤務日数 備考 田中 さくら 10/16 19:32 早番(1・3週)遅番(2週) 11/1,4,6,9,12… ✅ 確認済 10/20 ✅ 返信済 ✅ 07:05入館 8日 — 鈴木 太郎 10/18 21:02 遅番(全週) 11/2,5,9,13,16… ✅ 確認済 10/20 ⏳ 未返信 ✅ 07:52入館 10日 緊急代打4日✅ 佐藤 さくら 10/19 09:15 早番(2・4週) 11/8,11,22,25… ✅ 確認済 10/21 ✅ 返信済 ⏳ 確認待ち 6日 — 山田 けんじ (未提出) 催促送信済み — ⏳ 未確認 — — — 希望未提出⚠ 各ステップで自動記録される情報 STEP1:希望提出日時・希望シフト帯(ボタン回答)→ 自動記録 STEP2:確定シフト通知日・確認ボタンタップ日時 → 自動更新 STEP3:前日リマインド返信有無・当日チェックイン時刻 → 自動記録 STEP4:緊急代打回答者・対応日時・時間帯 → 備考欄に自動記録 月末集計:月間勤務日数・推定給与・充足率 → 自動集計 11月 月次集計サマリー(自動生成) 総稼働スタッフ数 12名 前月比:+2名 総シフト充足率 94% 目標:90%以上 緊急対応件数 2件 すべて当日解決 希望未提出スタッフ 1名 → 翌月は早めに催促

STEP1〜4のすべての記録がスプレッドシートに自動蓄積。月末には稼働スタッフ数・充足率・緊急対応件数・未提出者数が自動集計されます

4つのシートタブと「月次集計シート」

STEP1〜4で作成した4つのシートタブ(①希望収集 ②確認管理 ③出勤管理 ④欠員管理)にデータが日々自動で蓄積されます。月が終わると⑤月次集計シートを開くだけで、Googleスプレッドシートの関数が4タブのデータを読み込んで自動集計してくれます。

「関数」はコピペするだけ:関数とは「計算してください」という命令をセルに入れる機能です。たとえば =COUNTIF(確認管理!C:C,"確認済み") と入れると「確認済みが何個あるか」を自動で数えます。一度入力すれば翌月から自動更新。難しく聞こえますが、コピー&ペーストするだけで使えます。
作り方⑤月次集計シートを1回だけ作る約10分
  1. 画面下の「+」で新しいシートを追加し、タブ名を「⑤月次集計」に変更します。
  2. A列に集計項目名、B列に関数を入力します(下表)。式を一度入れれば翌月以降は自動更新されます。
  3. B列に数字が出れば完成。「#REF!」などのエラーが出たらシート名のスペルが式と一致しているか確認します。
A列:集計項目B列:関数(コピペ)結果例
希望提出スタッフ数=COUNTA(希望収集!A:A)-112
シフト確認済み数=COUNTIF(確認管理!C:C,”確認済み”)11
当月総出勤日数=COUNTA(出勤管理!A:A)-187
欠勤件数=COUNTIF(出勤管理!G:G,”欠勤*”)3
欠員発生件数=COUNTA(欠員管理!A:A)-12

集計結果を翌月のシフトに活かす

希望未提出が多い場合

締切を3日早める/催促を前倒しにする/個別にLINEで一言送る。

特定の曜日に欠勤が多い場合

その曜日を1名多めに配置する/担当スタッフに事前確認を入れる。

Googleスプレッドシートは共有リンクを送るだけで、オーナーや上司にも「閲覧のみ」で見てもらえます。月次の報告資料としてそのまま活用できます。STEP5自体に新しいLメッセージ設定は不要で、やることは「集計シートを追加して関数を入れるだけ」です。

GAS拡張

さらに自動化する(上級者向け)

ここまではエルメ(Lメッセージ)のノーコード連携だけで完結します。ここから先は「エルメだけでは届かない部分」をGoogle Apps Script(GAS)で自動化したい方向けの発展編です。①はエルメを使わずLINE Messaging APIで土台から組む構成、②③は送信(push)だけなのでエルメ運用にそのまま足せます。コピペで動きますが、LINE Developersの登録が前提です。

GASは「スプレッドシートの拡張機能 → Apps Script」から開けます。認証情報(トークン)はコードに直書きせず、スクリプトプロパティに保存して呼び出すのが安全です。

下準備スクリプトプロパティに認証情報を登録する約5分
  1. Apps Scriptエディタ左側の ⚙️ プロジェクトの設定 を開きます。
  2. 「スクリプト プロパティ」で以下の2つを追加します。
    • LINE_TOKEN:LINE公式アカウントのチャネルアクセストークン(長期)
    • ADMIN_UID:通知を受け取る担当者のLINE userId
  3. 保存します。以降、コードからは名前で呼び出すだけです。

※ トークンをコードに直書きすると、コピー共有時に漏れる危険があります。スクリプトプロパティに置けば、コード本体を見せても認証情報は隠れたままです。

共通:LINEにメッセージを送る関数

①〜③のすべてで使い回す送信用の関数です。まずこれを貼り付けておきます。

📄 共通ヘルパー pushLine.gs
// ▼ 共通:指定ユーザーにLINEメッセージを送る(①〜③で使い回す)
function pushLine(to, text) {
  const token = PropertiesService.getScriptProperties()
    .getProperty('LINE_TOKEN');
  UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
    method: 'post',
    contentType: 'application/json',
    headers: { 'Authorization': 'Bearer ' + token },
    payload: JSON.stringify({
      to: to,
      messages: [{ type: 'text', text: text }]
    })
  });
}
① LINEのボタン回答をスプレッドシートに記録(土台)

エルメを使わず、LINE Messaging APIで直接組む場合の土台です。スタッフがボタン(postback)をタップすると、その内容が該当タブに1行追加されます。ウェブアプリとしてデプロイし、そのURLをLINE DevelopersのWebhookに設定します。

📄 ① Webhook受信 doPost.gs
// ▼ ①LINEのボタン回答を受け取り、対応するタブに記録する
function doPost(e) {
  const ev = JSON.parse(e.postData.contents).events[0];
  if (!ev) return ContentService.createTextOutput('no event');

  const uid = ev.source.userId;
  const ss  = SpreadsheetApp.getActiveSpreadsheet();

  if (ev.type === 'postback') {
    // 例:action=希望&week=1&shift=早番
    const p = parseData_(ev.postback.data);
    if (p.action === '希望') {
      ss.getSheetByName('希望収集')
        .appendRow([new Date(), uid, '', p.week, p.shift]);
    } else if (p.action === '確認') {
      ss.getSheetByName('確認管理')
        .appendRow([new Date(), uid, '確認済み']); // C列に「確認済み」
    }
  }
  return ContentService
    .createTextOutput(JSON.stringify({ ok: true }))
    .setMimeType(ContentService.MimeType.JSON);
}

// data文字列を { action, week, shift } に分解する補助関数
function parseData_(data) {
  const o = {};
  data.split('&').forEach(function (kv) {
    const a = kv.split('=');
    o[a[0]] = decodeURIComponent(a[1] || '');
  });
  return o;
}
エルメと併用する場合の注意:LINEのWebhookは1つの公式アカウントにつき1つしか設定できません。すでにエルメでWebhookを使っている場合、①は同じアカウントには入れられません。①は「エルメを使わずGASだけで土台を作る」構成向けです。②③は送信のみなので、エルメ運用と併用できます。
② 出勤リマインドを時刻トリガーで自動配信(STEP3)

確定シフト表(担当者がSTEP2で完成させる一覧。A列:勤務日/B列:userId/C列:氏名/D列:時間帯)を読み、翌日・当日に出勤するスタッフだけへ自動でリマインドを送ります。時間主導型トリガーで前日18時・当日7時に実行します。

📄 ② 出勤リマインド reminder.gs
// ▼ ②-1 前日18時リマインド(トリガー:毎日18:00)
function sendPrevDayReminder() {
  remindByDate_(1,
    '【明日の出勤リマインド🏨】\n明日 %DATE% は %TIME% 出勤です。\n' +
    'お気をつけてお越しください。');
}

// ▼ ②-2 当日7時リマインド(トリガー:毎日07:00)
function sendSameDayReminder() {
  remindByDate_(0,
    '【本日の出勤🏨】\nおはようございます!本日 %TIME% 出勤です。\n' +
    '気をつけてお越しください。');
}

// 指定日数後に出勤するスタッフへLINEを送る共通処理
function remindByDate_(offsetDays, template) {
  const rows = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName('確定シフト').getDataRange().getValues();
  const target = Utilities.formatDate(
    new Date(Date.now() + offsetDays * 86400000),
    'Asia/Tokyo', 'yyyy/MM/dd');

  for (let i = 1; i < rows.length; i++) {
    const day = Utilities.formatDate(
      new Date(rows[i][0]), 'Asia/Tokyo', 'yyyy/MM/dd');
    if (day !== target) continue;        // 対象日でなければスキップ
    const uid  = rows[i][1];
    const time = rows[i][3];
    pushLine(uid,
      template.replace('%DATE%', day).replace('%TIME%', time));
  }
}
③ 月次集計+担当者へLINE通知(STEP5)

毎月1日の朝に先月分を自動集計し、「月次集計ログ」タブ(1行=1か月の履歴。STEP5の縦型集計シートとは別に作る)に1行追記したうえで、担当者のLINEへサマリーを送ります。STEP5の関数(COUNTIF/COUNTA)をGAS側でまとめて実行し、結果を通知まで一気通貫にします。

📄 ③ 月次集計+通知 monthlyReport.gs
// ▼ ③毎月1日の朝に先月分を集計し、記録+担当者へ通知(トリガー:毎月1日9:00)
function monthlyReport() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();

  // 指定タブの列から件数を数える補助関数
  const cnt = function (sheet, col, keyword) {
    const vals = ss.getSheetByName(sheet)
      .getRange(col + '2:' + col).getValues().flat();
    return vals.filter(function (v) {
      return keyword ? String(v).indexOf(keyword) === 0 : v !== '';
    }).length;
  };

  const kibou = cnt('希望収集', 'A', '');        // 希望提出スタッフ数
  const kakunin = cnt('確認管理', 'C', '確認済み'); // シフト確認済み数
  const kekkin = cnt('出勤管理', 'G', '欠勤');      // 欠勤件数
  const ketuin = cnt('欠員管理', 'A', '');         // 欠員発生件数

  const ym = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy年M月');
  ss.getSheetByName('月次集計ログ')
    .appendRow([ym, kibou, kakunin, kekkin, ketuin]);

  const admin = PropertiesService.getScriptProperties()
    .getProperty('ADMIN_UID');
  pushLine(admin,
    '📊 ' + ym + 'のシフト集計\n' +
    '・希望提出:' + kibou + '名\n' +
    '・確認済み:' + kakunin + '名\n' +
    '・欠勤:' + kekkin + '件\n' +
    '・欠員募集:' + ketuin + '件');
}
仕上げ②③をトリガーで自動実行にする約3分
  1. Apps Scriptエディタ左側の ⏰ トリガー を開き「トリガーを追加」をクリックします。
  2. 実行する関数に sendPrevDayReminder を選び、イベントのソース=「時間主導型」→「日付ベースのタイマー」→「午後6時〜7時」に設定します。
  3. 同様に sendSameDayReminder を「午前7時〜8時」、monthlyReport を「月ベースのタイマー/1日/午前9時〜10時」で追加します。

※ 時刻はトリガーの時間帯で指定します(分単位の厳密指定は不可)。厳密な時刻が必要な場合は毎分トリガー+時刻判定で調整します。

役割分担のイメージ:日々の受付・配信はエルメ(ノーコード)に任せ、GASは「エルメでは組みにくい集計・通知・独自ロジック」だけを担当する——この切り分けにすると、無理なく拡張できて運用も安定します。

まとめ|Lメッセージで必要な設定一覧

月次シフト管理 LINE構築の要点(STEP1〜5)

  • STEP1:毎月15日に希望収集を自動配信。未回答者には締切前に自動催促
  • STEP2:確定シフトを個人名・日別・時間帯入りで個人別通知。確認ボタンで既読管理
  • STEP3:出勤前日18時・当日朝7時に自動リマインド。チェックインボタンで出勤確認
  • STEP4:急な欠員は全スタッフへ一斉配信。3パターン回答+担当者自動アラート
  • STEP5:全データをスプレッドシートに自動記録。月次集計まで完全自動化

Lメッセージで必要な主な設定

① 毎月15日の定期自動配信シナリオ(STEP1 希望収集)
② 未回答タグを持つスタッフへのセグメント配信設定(催促)
③ 確定シフト個人別差し込み送信テンプレート(STEP2)
④ 出勤前日・当日朝の遅延配信シナリオ+欠勤アラート(STEP3)
⑤ 急な欠員募集用テンプレート+3パターン回答+担当者アラート(STEP4)
⑥ 全ステップのGoogleスプレッドシート外部連携設定(STEP1〜5共通)

この5ステップが完成すると、担当者が毎月やることは「スプレッドシートを見てシフト表を組む」だけになります。希望収集・催促・確定通知・リマインド・欠員対応・月次集計は、すべてLINEとスプレッドシートが自動で回してくれます。