やりたいこと
Confluence(以下、コンフル)を使って会議の議事録などを取っていると、
下図のようにタイトルに日付がついたページがいくつも作成されることがあります。
ここでは、Python APIを使って、タイトルが「202006」ではじまるページをとあるページの下に移動させてみます。
環境
Confluence
https://www.atlassian.com/ja/software/confluence
今回はクラウド版の無料トライアルを利用します。
申し込みの方法などは省略します。
以下コンフルの画面は2020年7月5日時点のものになります。
Python実行環境
$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G13035
$python3 --version
Python 3.7.4
準備
APIトークンの発行
最初にConfluenceをプログラムから使用するため、APIトークンを発行します。
コンフルにログイン後、ブラウザの右上にある自分のアイコンマークをクリックし、Settingsを表示します。
下図にあるように、Passwordをクリック。
下図にあるようにAPI tokenの段落にある「Create and manage API tokens」をクリック。
遷移先の画面でAPIトークンを作成します。
トークン作成時に表示される文字列をあとで使用するので、どこかに保存しておきます。
ライブラリのインストール
Python APIのページ( https://pypi.org/project/atlassian-python-api/ )にあるように、pip
でインストールします。
特にエラーもなくインストールできました。
pip install atlassian-python-api
PythonによるAPI操作
上記のPython APIのページにもAPIを紹介しているDocumentページが分かりにくいため、
Githubのページ( https://github.com/atlassian-api/atlassian-python-api )を参照して、以下のプログラムを作りました。
from atlassian import Confluence
if __name__ == '__main__':
space = "TESTSPACE0"
parent_page_id = 33023 # "[テスト] ページ移動" ページのID
archive_page_title = '202006_会議A'
target_str = '202006'
# Auth
confluence = Confluence(
url='https://XXXX.atlassian.net',
username=<username / mail address>,
password=<API Token>)
# Create archive page
confluence.create_page(space, archive_page_title, '', parent_page_id)
archive_page_id = confluence.get_page_id( space, archive_page_title )
# Get page list & move
for i_page in confluence.get_child_pages(parent_page_id):
if target_str in i_page['title'] and i_page['id'] != archive_page_id:
confluence.move_page( space, i_page['id'], archive_page_id )
ここでは、実行している内容は次の通りです。
- コンフルインスタンスを作成。URLはコンフルページのURLを参照。ユーザネームとAPIトークンを引数に渡します。
- コンフル上の「[テスト] ページ移動」のページ配下に「202006_会議A」というページを作成し、ページIDを取得
- 「[テスト] ページ移動」以下にあるページに対して、「202006」という文字列を含むページ(1.で作成したページを除く)は直前に作成したページ以下に移動
これをpython move.py
と実行します。
その結果、下図のように「202006」を含むページをまとめて移動することができました。
まとめ
Python APIを使って、コンフルのページをまとめて移動してみました。
設定方法やプログラムの書き方ももっとうまくかけると思います。
プログラム内容をもう少し変更して、定期実行するようにすればコンフルページの整理が自動化できる...はず