Obsidian Tasksで特定のタグがあるファイルのタスクを表示・取り除く方法

Obsidian Tasksで特定のタグがあるファイルのタスクを表示・取り除く方法

Obsidianでタスク管理するためにObsidian Tasksは便利です。

ですが特定のタグがついているノートのタスクを取り除いたり、特定のタグがついているノートのタスクのみ表示が通常の使い方ではできません。(記事執筆時点)
自分の使い方ではそういうことをしたいシチュエーションがあって、できないと結構困ります。

そこで標準的な方法ではないものの、DataviewJSと組み合わせることで実現できるので方法を紹介します。

目次
  1. Obsidian Tasksのfileについて
  2. 特定のタグがついているノートのタスクを取り除く
  3. 特定のタグついているノートのタスクのみを表示
  4. まとめ

Obsidian Tasksのfileについて

Obsidian Tasksではタスクが記述されているファイルの情報を取得することができます。

じゃあそこからタグをフィルタリングすればいいのでは?と思うけど、残念ながらタグの情報は取得できません。
取得できる情報はユーザーガイドに記載されています。

Task Properties - Tasks User Guide - Obsidian Publish

Values for File Propertiesの項目task.fileで取得できる情報があり、その中にはタグに関しての記載はありません。
ソースコードを見てみてもやはりタグの情報を取得するようなことはできなさそうでした。

特定のタグがついているノートのタスクを取り除く

まずは特定のタグがついているノートのタスクを取り除く方法です。
tasksブロックは使わずにDataviewJSのdataviewjsブロックを使います。

1
2
3
4
5
6
7
const excluded = '(' + dv.pagePaths('#取り除きたいタグ名').array() .map(x => 'path does not include ' + x) .join(') AND (') + ')'
const query = `
not done
${excluded}
`

dv.paragraph('`tasks\n' + query + '\n`')

やっていることはタグがついているノートのパスを取得し、そのパスが含まれていないものを取得するクエリを作成しています。

こちらのフォーラムで紹介されている方法を参考にしました。

How can I list tasks from all notes with a certain tag (using the Tasks plugin)? - Help - Obsidian Forum

特定のタグついているノートのタスクのみを表示

取り除きたいニーズがあればその逆にのニーズも大体あると思います。

今度は特定のタグがついているノートのタスクのみを表示する方法です。

1
2
3
4
5
6
7
const included = '(' + dv.pagePaths('#Game').array().map(x => 'path includes ' + x) .join(') OR (') + ')'
const query = `
not done
${included}
`

dv.paragraph('```tasks\n' + query + '\n```')

取り除く場合とは逆にタグがついているノートのパスを取得し、そのパスが含まれているものを取得するクエリを作成しています。

まとめ

Obsidian Tasksで特定のタグがついているノートのタスクを取り除いたり、特定のタグがついているノートのタスクのみ表示する方法を紹介しました。

機能的に標準でできても良いような気もするのですが、現状ではDataviewJSを併用して実現することになります。

この記事を書いた人
KJ
KJ

初めてブログに触れたのはまだSNSが流行る前。そしてブログの楽しさをきっかけにシステムエンジニアになりました。会社員を経て独立して、人生の時間を有意義に過ごせるように日々暮らしています。 好きなことはディズニー、ライブ参加、旅行、飛行機・空港、整理収納、本、お酒、ゲーム、ObsidanやNotionのようなツールを触る、YouTubeを見るなどなど。 ■詳しいプロフィールが気になる人 こちらプロフィールを読んでください。

関連記事

  1. HOME
  2. Obsidian Tasksで特定のタグがあるファイルのタスクを表示・取り除く方法

注目記事