Skip to content

スプレッドシートのレイアウト ​

すべての打刻は指定した SPREADSHEET_ID のスプレッドシートに、2種類のシートへ二重記録されます。

月別シート(YYYY-MM) ​

シート名の例: 2026-08(スプレッドシートのシート名に / が使えないため YYYY/MM ではなく YYYY-MM 表記)。

該当月の初回打刻時に自動生成され、以下の形で初期化されます。

行 / 列ABC〜
1行目(ヘッダー)日付曜日イベント列のラベル(都度追記)
2行目(1日)1月...
3行目(2日)2火...
............
  • 各行は「その日1日分」に対応(行番号 = 日付 + 1)
  • C列以降は、その日に発生した鍵取り・鍵返却イベントが起きた順に左から詰めて記録されます。1組の鍵取り→鍵返却が「①」、2組目が「②」…という具合にラベル付けされます(鍵取り①, 鍵返し①, 鍵取り②, 鍵返し②, ...)
  • セルの値は時刻のみ(例: 13:05)
  • 1日に21回目以降の打刻があった場合、丸数字が尽きるため (21) のような表記にフォールバックします

年別ログシート(<year>-logs) ​

シート名の例: 2026-logs。

各打刻の詳細を1行ずつ、発生順に追記していく監査ログです。

日付時刻アクション氏名ユーザーID
2026-08-0913:05鍵取りtaro123456789012345678
2026-08-0918:40鍵返却taro123456789012345678
  • アクション 列には 鍵取り / 鍵返却 に加えて、/backdate 経由の場合は 鍵取り(コマンド遡り) のように付記されます(判定は部分一致 strings.Contains で行われるため、遡り記録も通常の記録と同様に扱われます)
  • 現在の貸出状況(誰が借りているか)はこのシートを新しい行から遡って読むことで判定されます。 鍵取りの行が返却の行より新しければ「貸出中」、その逆なら「未貸出」です
  • 年をまたいだ直後で当年のログがまだ空の場合、前年のログシートにフォールバックして判定します

なぜ2つのシートに分けているか ​

  • 月別シートは「1日の流れをぱっと見で把握する」ための一覧性重視のビュー
  • 年別ログシートは「誰が・いつ・何をしたか」を機械的に検索・集計するための正規化されたログ

/backdate-fix による時刻修正は、両方のシートの対応するセルを同時に更新することで整合性を保っています。