• Reading time:7 mins read

Mac純正アプリだけでタイムレコーダーを作るプロジェクトの第2回目に突入します。どうも、私(@saosaoyamayama)です。

前回は稼働開始前の下準備として、メモ.appへのページ追加や未完了タスクのコピペなどを自動化しました。

今回は打刻用のスタートボタン・ストップボタンを作ってまいります。「カレンダー.app」をタイムレコーダーとして使うわけです。仕事の所要時間(ラップタイム)も算出しますよ〜!

スタート・ストップボタン概要

7つのショートカット概要
タイムレコーダー作成プロジェクト概要

今回は上図の2・3を作ります。

稼働1セットにつきカレンダーの予定を1つ作成する、というシンプルなスタイルです。たとえば9時〜11時、12時〜14時で稼働するなら予定が2つ追加されます。

私はフリーランスなので始業・終業時間は決まっておらず、中抜け・細切れで稼働することもあるので、1日何セット稼働してもラップタイム(開始〜終了の所要時間)が正確に取得できるように工夫しました。

  1. 開始ボタンを押下した時間〜3時間後までの予定作成
  2. 終了ボタンを押下したら終了時刻をボタン押下時間に変更
  3. 終了ボタンを押下したら予定タイトルに「-終了」を付ける
  4. 開始〜終了のラップタイムと時刻をカレンダーメモ欄に出力
  5. 開始〜終了のラップタイムと時刻を当日ページ(メモ.app)に出力

大まかな流れはこんな感じです。それではスタートボタン・ストップボタンに分けて解説しまーす。

スタートボタン作成

スタートボタン作成
スタートボタンはとてもシンプル

まずは、稼働開始時に押すスタートボタンのショートカットを作ります。スタートボタンはかなりシンプルです。

どのカレンダー(カテゴリー的な意味でのカレンダー)を使うか、決めておいてくださいね!

終了日用変数パーツ作成:変数1

カレンダー.appで予定を作成する時は、予定タイトルや日時・カレンダー(カテゴリーみたいなもの)などの指定が必要です。そのうちの1つである「終了日(終了時刻)」パーツを作成します。

終了時刻は「稼働開始の○時間後」で指定しますが、稼働してみなければわかりませんよね。なので適当でOKです。私は稼働開始から3時間後としました。

ここで使用するアクションは《日付を調整》です。とある日時を起点として○時間後・○分前などが算出できます。

今回は、ボタンを押す時刻(=「現在の日付」)に3時間を加算、です。

稼働開始打刻(予定作成)

カレンダーに予定を作成する時は《新規予定を追加》を使います。開始日は「現在の日付」、終了日は上で作った変数1です。

予定のタイトル(名前)には社名と日付を入れています。カスタムフォーマットを使って「社名-MM/dd」としました。カスタムフォーマット、便利っす……。

あとは必ず「表示を増やす」をクリックしてカレンダーを指定しましょう。今回は「リマインド」というカレンダーを指定しています。

ここで1つ注意点。

英語で始まるタイトルを付けると文字化けするようです。

予定タイトルの文字化け
盛大に文字化け

当初「A社」という表記でテストショートカットを作っていたんですが、文字化けして数字に変換されてしまいました。

ただ、表示が化けるだけで「A社」で検索できるみたいですね(オススメはしない)。

ストップボタン作成

ストップボタン作成概要
ストップボタンは少しややこしい

ストップボタンはちょっと複雑。以下の順に動きます。

  1. ボタンを押す
  2. 押した時刻を「終了日」に変更
  3. 予定タイトルに「-終了」を付ける
  4. 何分稼働したか計算
  5. 計算結果と時刻を予定メモ欄&メモ.appの当日ページに記入

画像右側が最終的な出力ゴールです。

予定ピックアップ〜ラップタイム計算

ストップボタンその1

稼働進行中の予定を検索して終了時間を打刻、タイトルに「-終了」を付けてラップタイムを計算させます。

稼働記録中の予定を検索:変数1

スタートボタンで作成した予定を検索したいので《カレンダーの予定を検索》を使います。検索条件は画像を参考にしてください。

この時必ず「終了を含まない」という条件を入れるのがポイントです。

また予定の名前は「〜と一致」で検索したいところですが、うまく検索できなかったため「〜を含む(含まない)」を使いました。

予定を編集:変数3

《カレンダーの予定を編集》は予定の各項目を変更・修正する時に大活躍するアクションです。ここでは2つセットしましょう。

1つ目では、検索した予定(変数1)の終了日を「現在の日付」に書き換えます。これで稼働開始〜終了の時刻が確定しますね!

2つ目はタイトルの編集です。こちらはカスタムフォーマットを使って「社名-MM/dd-終了」に変更します。

ラップタイムを計算:変数4

確定した開始時刻・終了時刻からラップタイムを計算しましょう。ここでは《日付間の時間を取得》を使います。

終了時刻確定済みの予定を使う必要があるので、私は変数3の開始日・終了日をセットしました。

稼働時間を算出する時に「秒」を含めて計算するならフォーマットナシでOKです。しかし「秒は切り捨て」とするなら以下にご注意を。

秒を含めずにラップタイムを計算するなら、必ず「HH:mm」にフォーマットしましょう。

1分のズレ

というのも、フォーマットしないと1分単位で計算がズレてしまいます

こちらの画像、稼働は5分間のはずなのに、6分になっています(★6★)。1分ズレていますよね……。

原因は「秒」を加味して計算しているからです。

フォーマットを複数試した結果、「HH:mm」なら正確に計算してくれることがわかりました。日付は不要です。

貼り付け用テンプレ作成〜各所に貼り付け

ストップボタンその2
仕上げますよ

計算したラップタイムを、予定のメモ欄・メモ.appの当日ページに記入するショートカットです。

わざわざラップタイムを記録する理由は、何かミスが出た時にチェックしやすいから。たとえば先ほどの1分のズレとかですね。説明はややこしいので省きます。

貼り付けテンプレート作成:変数5

《テキスト》を使って、貼り付けテンプレを作りました。

ポイントは稼働時間を「★」で囲むこと! のちのち役に立ちます。あとは稼働開始と終了を「〜」で繋ぎました。フォーマットは日付ナシで時間は「短」です。

テキストを各所に貼り付ける

作成したテキスト(変数5)をカレンダーのメモ欄・メモ.appの当日ページに貼り付けます。

まず、カレンダーについては《カレンダーの予定を編集》を使い、予定(変数3)の「メモ」にテキスト(変数5)を貼り付ければOK。

最後にメモ.appで当日ページを検索(変数6)し、テキスト(変数5)を貼り付けましょう。テキストのフォーマットは不要です。

ラップタイムと稼働時間
出力結果

ラップタイムはページの最下部にペーストされます。

いろいろと書き込みをしてあっても、複数回稼働した場合でも「ボタンを押した時点」のページ最下部にペーストされる形です。

次回は集計ショートカットを3つ作ります!

これで無事、タイムカードの「打刻」機能が実装できましたね!

次回はいよいよ、1日の稼働終了時に使う報告書出力用ショートカット作成に入ります。あと2回で完結ですよ〜!

うまく動かない・もう少し詳しく聞きたい……などあれば、お問い合わせからご連絡いただくか、X(@saosaoyamayama)のDMでご連絡くださいませ。

S.Nakayama

一帖半執筆工房代表。 デジタルマーケ企業のフリーランスPMとして計9サイトのコンテンツ制作を並行指揮した経験を持つ。 現在は企業の人材育成コンサルやメディア進行管理をしながら、グラフィックデザイン・文章校閲・校正者・ライターとしても活動中。 DigitalCameraWorld認定フォトグラファー、臨床検査技師。