##1. はじめに
iPhone のショートカットアプリと numbers で簡単な工数管理ツールを作ってみました。
タイマーとも連携していて、指定の時間経過するとアラームで知らせます。
なお、ios 15 で動作確認しています 14 では import 時にショートカットとして認識しませんでした。
使い物になれば、ご利用いただいても良いですし、機能を追加するなど何かの参考になれば幸いです。
##2. 使い方
画像 | ShortCuts での入力 |
---|---|
ショートカットからタイムトラッキングを選ぶ | |
記録する作業を選択 | |
時間を設定 | |
コメントあれば書く | |
指定した時間のタイマーがセットされ、指定の時間経過するとアラームで知らせてくれます。 タイマーアプリの仕様かとおもいますが、 すでにタイマーが設定されていた場合のみ、このように時間確認の画面が表示されます。 |
iPhone の Numbers アプリで集計 |
---|
Numbers アプリで毎回の記録が自動集計されグラフ表示されます |
##3. iPhone にインストールして使ってみる
-
iPhone に「ショートカット」アプリと 「numbers」 アプリをインストールしておきます。
-
iPhone で信頼されていないショートカットを有効にします。
「設定] -> 「ショートカット」 -> 「信頼されていないショートカットを・・・」 これを「ON」にします。
-
iPhone から以下の URL をアクセスし、ショートカット「タイムトラッキング」 をダウンロードします。
https://www.icloud.com/shortcuts/075e6047dcfb47d7add7e28d1437903f -
実行してみる
ダウンロードした「タイムトラッキング」を実行してみます。初回は numbers のシートをダウンロードするのみで終了します。
-
動作確認してみる。
数分の間隔をあけて適当に作業項目を選択し記録してみます。その集計が numbers のシートに反映され円グラフの比率が変わる事などを確認できれば OK です。
※数分の間隔をあけているのは、例えば 1:10 に開始して 1:10 に終了しても 0 分の作業時間となり円グラフに反映されず、分かりにくいからです。
##4. 補足
選択項目を変更・追加する場合
-
「5.タイムトラッキングの内容説明の②」にある項目を追加 or 変更します。
例えば「調査」を「プログラミング」に変更するばあい、"調査" という文字列をすべて"プログラミング"に変更します。
-
「6.numbers シートの説明①②」も同様に、対応したセルの計算式を "調査" から "プログラミング" のように対応した種類を参照するように変更・追加します。
下記の設定も、参照しているセル名 "分 調査" から "分 プログラミング" に変更ですね。 |
- それと上記の集計 A2 の "調査" 文字列も "プログラミング" など変更したい値へ変えておきます。
- 項目を追加する場合は、新しい行を集計に加え、同じように対応したセルの計算式も加えます。
- あと「5.タイムトラッキングの内容説明⑥」にある Get file from Shortcuts at path timesheet.numbers は、Error if Not found を ON に変更しておいたほうが良いかもです。
もしファイルが無いと、デフォルトのファイルを github からダウンロードしてしまうからです。
割り込み作業が発生した場合の動作についての説明
1.「調査」「120」をセット
調査を開始しようと、「調査」「120」分をセットしたとします。その時 numbers には以下のように記録されています。
- 割り込みがあり「ミーティング」「30」をセット
その後、120 分経過するまえに割り込みの案件があり、ミーティングに参加することとなりました。そこで「ミーティング」「30」をセットしました。すると、下記のように、"割り込み” としてマイナスの時間が追加されたのち、新しくミーティングの記録が行われます。
このようにマイナスの値を加える事で、割り込みがあった場合の時間を補正しています。
無音タイマーがおすすめ
iPhone のタイマーに無音がありません。頻繁にタイマーの音が鳴るので私は無音音源をタイマーに加えて、バイブレーションみでの通知にしました。
無音タイマーの設定については、この記事では記載していませんので、下記の記事などを参考にしてみてください。
https://togai.jp/2021/04/24/1198
##5. タイムトラッキングの内容説明
番号 | 画像 | 説明 |
---|---|---|
① | ! | ・このアプリの説明 |
② | ・Dictionary 使い、選択できる項目リスト |
|
③ | ・選択された項目のキーを Select にセット ・キー(Select) に対応する値を取得し Chosen item にセット ・費やす時間の質問し、Activity Minites にセット |
|
④ | ・コメントを質問し、値を Comments にセット ・現在時刻の取得し "Start" にセット ・現在時刻をフォーマットしFormatted start にセット ※Date Format = ISO8601、include ISO 8601 Time とする。 フォーマットしないと時間の比較が正しく動作しないため |
|
⑤ | ・Start-long 変数へ Formatted start をセット ・辞書の start に、Formatted start をセット ・辞書の select に、"Chosen item" をセット |
|
⑥ | ・辞書の activity に "Activity Minutes" をセット ・iCloud 上の /Shortcuts/timesheet.numbers をオープン |
|
⑦ | ・もし timesheet.numbers ファイルがなければ http://github.com/takimai39/timesheet/raw/main/timesheet.number をダウンロード ・そのデータを timesheet.numbers として保存 |
|
⑧ | ・ダウンロードした旨のメッセージを表示 ・そして終了 ・latest.json ファイルを取得 |
|
⑨ | ・if ( latest.json != null ) { という意味合いの if 文 つまりファイルが存在すればという意味の条件 ・latest.json を辞書として読み込み ・辞書ファイルから start の値を取得| |
|
⑩ | ・辞書ファイルから activity を取得 ・latest-start をフォーマット ※Date Format = ISO8601、include ISO 8601 Time |
|
⑪ | ・Latest-long 変数に "Formatted latest" をセット ・Latest-long と Start-long の時間差を計算し、"Time Between Dates" にセット ・Diff 変数に "Time Between Dates" をセット |
|
⑫ | ・if文:もし diff が、先の Activity (Latest-activity) より小さければ ・先の activity の残残り時間をマイナス値として取得 |
|
⑬ | ・timesheet.numbers に"割り込み” として、マイナスの時間を追加 ・連続して書き込みを実行すると失敗する対策で5秒待ち ・if文終わり ・if文終わり |
|
⑭ | ・lastest.json に辞書を保存 ・timesheet.numbers に、現在時刻、選択項目、コメントを追加 |
|
⑮ | ・指定時間のタイマーをセット 以上 |
##6. numbers シートの説明
番号 | 画像 | ShortCuts での入力 |
---|---|---|
① | ・青線で囲われたセルは、対応する種類の時間を集計しています。< | |
② | ・青線で囲われた列は、分を元に時間にしています。 | |
③ | ・円グラフは、時間列から表示しています。 |
##7. その他
以下を参考にして作成しました
- Shortcuts アプリ -> ギャラリー -> Time Tracking を元にしました。
- numbers のグラフは、どこだったか忘れましたが numbers の TimeSheet のサンプルから。
以上、何かの参考になりましたら幸いです。