8
5

More than 3 years have passed since last update.

ConfluenceのPython APIでページ作成&ページ移動してみた

Last updated at Posted at 2020-07-06

やりたいこと

Confluence(以下、コンフル)を使って会議の議事録などを取っていると、
下図のようにタイトルに日付がついたページがいくつも作成されることがあります。
ここでは、Python APIを使って、タイトルが「202006」ではじまるページをとあるページの下に移動させてみます。

move_before.png

環境

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を表示します。

api_settings_01.png

下図にあるように、Passwordをクリック。

api_settings_02.png

下図にあるようにAPI tokenの段落にある「Create and manage API tokens」をクリック。
遷移先の画面でAPIトークンを作成します。
トークン作成時に表示される文字列をあとで使用するので、どこかに保存しておきます。

api_settings_03.png

ライブラリのインストール

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 )を参照して、以下のプログラムを作りました。

move.py
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 )

ここでは、実行している内容は次の通りです。

  1. コンフルインスタンスを作成。URLはコンフルページのURLを参照。ユーザネームとAPIトークンを引数に渡します。
  2. コンフル上の「[テスト] ページ移動」のページ配下に「202006_会議A」というページを作成し、ページIDを取得
  3. 「[テスト] ページ移動」以下にあるページに対して、「202006」という文字列を含むページ(1.で作成したページを除く)は直前に作成したページ以下に移動

これをpython move.pyと実行します。
その結果、下図のように「202006」を含むページをまとめて移動することができました。

move_after.png

まとめ

Python APIを使って、コンフルのページをまとめて移動してみました。
設定方法やプログラムの書き方ももっとうまくかけると思います。
プログラム内容をもう少し変更して、定期実行するようにすればコンフルページの整理が自動化できる...はず

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5