0
0
この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Obsidianテンプレートで、曜日ごとに表示する内容を変えたい(筋トレメニュー編)

Last updated at Posted at 2024-06-24

Obsidian、テンプレートによる筋トレ管理

こんにちは!
メモ、カレンダーもObsidianにまとめた私です。

今回は、筋トレメニューの表示を自動化し
Day plannerに表示することが出来たので共有させていただきます。

発端

毎日行うことであればテンプレートに記述することで楽ができますよね。
しかし、筋トレの場合毎日同じ種目を行うわけには行きません。

そこで、曜日ごとに自動で筋トレメニューを表示させるテンプレートを作成しました。
さらに、筋トレを何時にやるのかも固定するため、筋トレメニューをDay plannerにも表示するようにしました。
これで、筋トレの時間がない、という言い訳はできなくなります。

テンプレートについて 

以下に該当部分のテンプレートを表示します。
Day plannerを表示するためのプラグインが入っていることが前提になります。


 
# Day planner

<%*
const gymTimes = {

    '月': '19:00-20:30',

    '火': '18:30-20:00',

    '水': '19:30-21:00',

    '木': '18:00-19:30',

    '金': '20:00-21:30',

    '土': '10:00-11:30',

    '日': '16:00-17:30'
}

var events = await app.plugins.getPlugin('ics').getEvents(moment(tp.file.title,'YYYY-MM-DD'));

const dayOfWeek = today.format('ddd');

const gymTime = gymTimes[dayOfWeek];

const gymEvent = {

    summary: "ジムトレーニング",

    time: gymTime.split("-")[0],

    endTime: gymTime.split("-")[1],

    icsName: "Gym",

    utime: moment(gymTime.split("-")[0], "HH:mm").unix()

};

events.push(gymEvent);

events.sort((a,b) => a.utime - b.utime).forEach((e) => {

    const calendar = e.icsName.replace(" "," - ");

    const callUrl = e.callUrl? ` [${e.callType}](${e.callUrl})` : '';

    const location = e.location? ` 📍 (${e.location})` : '';

    tR += `- [ ] ${e.time}-${e.endTime} **${e.summary}**${location}${callUrl} #${calendar}\n`;

    if (e.description) {

        const inlineDescription = e.description.replace(/(?:\r\n|\r|\n)/g," ").replace(/\s{2,}/g," ");

        tR += `    - ${inlineDescription}\n`;

    }

    if (e.summary === "ジムトレーニング") {

        const gymSchedule = {

            '月': '胸部と三頭筋',

            '火': '背中と二頭筋',

            '水': '脚',

            '木': '肩と腹筋',

            '金': '全身(複合種目)',

            '土': '弱点強化',

            '日': '有酸素運動とストレッチ'

        };

        const todayGymWorkout = gymSchedule[dayOfWeek];

        const gymExercises = {

            '胸部と三頭筋': [

                "ベンチプレス 4セット",

                "インクラインダンベルプレス 3セット",

                "ケーブルフライ 3セット",

                "ディップス 3セット",

                "トライセップスプッシュダウン 3セット"

            ],

            '背中と二頭筋': [

                "デッドリフト 4セット",

                "ラットプルダウン 3セット",

                "ケーブルロウ 3セット",

                "バーベルカール 3セット",

                "ハンマーカール 3セット"

            ],

            '脚': [

                "スクワット 4セット",

                "レッグプレス 3セット",

                "レッグエクステンション 3セット",

                "レッグカール 3セット",

                "カーフレイズ 4セット"

            ],

            '肩と腹筋': [

                "ミリタリープレス 4セット",

                "サイドラテラルレイズ 3セット",

                "フロントレイズ 3セット",

                "クランチ 3セット",

                "プランク 3セット"

            ],

            '全身(複合種目)': [

                "パワークリーン 4セット",

                "懸垂 3セット",

                "ディップス 3セット",

                "バーベルロウ 3セット",

                "オーバーヘッドスクワット 3セット"

            ],

            '弱点強化': [

                "個人の弱点に応じたエクササイズを選択",

                "例: 追加の胸部トレーニング",

                "例: 追加の背中トレーニング",

                "例: 追加の脚トレーニング",

                "コアトレーニング"

            ],

            '有酸素運動とストレッチ': [

                "30分のジョギングまたは自転車エルゴメーター",

                "15分の全身ストレッチ",

                "10分のヨガポーズ",

                "10分の瞑想",

                "5分のクールダウン"

            ]

        };

        tR += `    - 今日のメニュー: ${todayGymWorkout}\n`;

        gymExercises[todayGymWorkout].forEach(exercise => {

            tR += `    - [ ] ${exercise}\n`;

        });

    }

})

%>

これを皆さんのテンプレートに貼り付けていただければ、筋トレメニューが表示されるはずです。
また、曜日によって筋トレをする時間も異なることから、それも弄れるようにしておきました。
筋トレメニューについてもご自身のプログラムに書き換えてください。

終わりに

今回は筋トレメニューでしたが、曜日ごとに繰り返す予定であればこの方法で表示できるはずです!
それでは良きObsidianライフを!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0