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