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

# 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ライフを！