VisasQ Inc. Advent Calendar 2025 21日目の記事です。
更新されていないドキュメントほど怖いものないですよね。
Confluence の自動化を使って更新されていないページを通知してもらい更新を頑張るようにしました! (結局頑張るのは人間)
Step1: xx日更新されていないページの一覧を週1でチェックしてメールで通知
「いつ」に関しては毎週月曜日の10時にしています。 (これはお好みで)

また「ページの検索」コンポーネントを追加し、 最終更新日が 92日より古いものを探すようにしています。

最後に「メールを送信」コンポーネントを追加し、本文に対象ページをリストアップするようにします。
以下の通りです
ページを更新することでこのメールは届かなくなります
{{#lookupPages}}
1. [{{title}}]({{url}}) by {{author.fullName}}
{{/}}
https://slmbrcat-tech.com/how-to-filter-confluence-pages-by-labels-and-post-teams-channel/ の記事を参考にさせていただいています。
Step2: 特定のラベルが付いているページのみを対象にする
ページの中には「メンテナンスしたい」ものと「インスタント」なものそれぞれあると思います。
ワークスペースを分けたりもできますが、 TOP ページなど更新しようがないページも含まれるのでラベルを使って区別できるようにします。
今回は、別の自動化を追加しています。
(一律で付与されてしまいますが、不要なページが少数だったので、ページ作成後や通知が来た後に手動で一度外してしまえばそこまで困りませんでした)

「ラベル」をフィルターするコンポーネントが無さそうだったので、メール文を作成するタイミングでチェックする構文を追加しています。
以下の通りです
ページを更新することでこのメールは届かなくなります
{{#lookupPages}}
{{#if(labels.name.join(",").match(".*(maintenance).*").isNotEmpty())}}
1. [{{title}}]({{url}}) by {{author.fullName}}
{{/}}
{{/}}
Step3: 更新するものが無ければメール通知をスキップする
毎週何も中身のない空メールが届くと体験悪いですよね。
ここが一番難航しました。 (データ構造が分からないので、どういう条件を書けばよいか見当がつかなかった)
「変数」コンポーネントを追加して、その変数値で判別するようにしました。
見てもらうと分かりますが、上記のメールで使った構文そのままです。 (もう少しスマートに書けそうですが)



