1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Backlog APIを使用してWikiを更新する

Last updated at Posted at 2019-11-26

背景

BacklogのWikiを修正したいが、修正対象の文言が複数ページに渡って記載されている。
人力で1ページずつ更新するには量が多いため、APIを使用して一括で修正を適用したい。

APIキーの発行

APIを使用するにはAPIキーの発行が必要です。
個人設定のAPIタブ(****.backlog.jp/EditApiSettings.action)から新しいAPIキーを発行します。

実装

Python3で実装していきます。

使用ライブラリ

import requests
import json
import sys

ある文言が含まれるWikiのページIDと本文を取得する

def wiki_search():
    params = {
        "apiKey": BACKLOG_API_KEY,
        "projectIdOrKey": BACKLOG_PROJECT_KEY,
        "keyword": ORIGIN_KEYWORD
    }
    result = requests.get(BACKLOG_HOST + "/api/v2/wikis", params=params)
    if "errors" in result.json():
        print(u"ERROR: {}".format(result.json()["errors"][0]["message"]))
        sys.exit()
    if not len(result.json()):
        print(u"INFO: \"置換元のキーワードは使われていません。\"")
        sys.exit()
    return {result.json()[i]["id"]: result.json()[i]["content"] for i in range(len(result.json()))}

本文に対し、文言置換を行う

def replace_contents(origin_contents):
    update_contents = {}
    for id, origin_content in origin_contents.items():
        update_content = origin_content.replace(ORIGIN_KEYWORD, UPDATE_KEYWORD)
        update_contents[id] = update_content
    return update_contents

文言置換した内容でWikiを更新する

def wiki_update(update_contents):
    for id, update_content in update_contents.items():
        params = {
            "apiKey": BACKLOG_API_KEY
        }
        data = {
            "content": update_content
        }
        result = requests.patch(BACKLOG_HOST + "/api/v2/wikis/{}".format(id), params=params, data=data)
        if "errors" in result.json():
            print(u"ERROR: {}".format(result.json()["errors"][0]["message"]))
            sys.exit()
        print(u"{} を更新しました。".format(json.dumps(result.json()["name"], ensure_ascii=False)))

更新履歴

20/03/14 更新内容をparamsではなくdataに含めるよう修正

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?