最近、ホワイトボードツール「Miro」を知り、仕事でブレストに使用しています。
付箋を貼り付ける他にもマインドマップを作ったりプレゼンテーションができたりなど、非常に機能が豊富です。複数人で作業しててもストレスなくぬるぬる動きます。Miroを使うとオンラインでも楽しくブレストができます。
CSVから付箋を作成できたら便利なので、PythonでAPIを叩いてみました。Mac OS11.3.1(Big Sur)、Python3.9で実行しています。
###参考:
https://developers.miro.com/reference
https://developers.miro.com/reference#sticker
APIキーは無料で取得できます。取得方法は上のQiitaがまとまっています。
##準備
APIキーは別で保存しましょう。
ここにAPIキーを書く
CSVファイルは「データ.csv」というファイル名で、カラム3つのUTF-8でエンコードされているファイルを想定しています。(この記事では触れませんがCSVをMacで操作しようとすると文字コードの壁がありますよね。。)今回使うCSVは最初の行に百人一首の歌が入っています。
MiroのボードのIDが必要になります。ボードをブラウザで開いたときにURLで (略)app/board/ の次に入っている文字列です。
##コード本文
import csv
import json
import requests
import time
with open('Miro_API_KEY.txt') as f:
access_token = f.read()
headers = {'Authorization': 'Bearer {}'.format(access_token)}
BOARD_ID = "<ここにボードのIDが入ります。>"
url_create_widget = "https://api.miro.com/v1/boards/{}/widgets".format(BOARD_ID)
my_csv = "データ.csv"
my_data = []
with open(my_csv,encoding="UTF-8") as f:
csv_reader = csv.reader(f)
for row in csv_reader:
my_data.append([row[0],row[1],row[2]])
for i, data_line in enumerate(my_data):
data = {}
data["type"] = "sticker"
data["x"] = 100
data["y"] = 0 + 114*i
# data["height"] = 228
# data["width"] = 199
data_style = {}
data_style["backgroundColor"] = "#f5d128"
# data_style["fontFamily"] = "Noto Sans"
data_style["fontSize"] = 40
data_style["textAlign"] = "left"
data_style["textAlignVertical"] = "top"
data["style"] = data_style
text_in_sticker = data_line[0]
data["text"] = "<p>{}</p>".format(text_in_sticker)
with open('load_data_tmp.json', 'w') as f:
json.dump(data, f)
json_open = open('load_data_tmp.json')
json_data = json.load(json_open)
response = requests.post(url_create_widget,json=json_data,headers=headers)
print(response.text)
time.sleep(1)
普通のREST APIなのですが、ペイロードを書くにあたり、引っかかった事がいくつかありました。
・付箋の大きさは自由に指定できません。"height"は199,228,350のどれかを指定できます。それから1でもずれると400エラー(ペイロードの中身の形式が間違ってるよ、という内容)になります。
・"scale"と"fontFamily"は指定しようとすると400エラーになっちゃいました。理由はわかりません。上のコードではコメントアウトしています。
・上のコードではJSONをファイルとして一旦出力して再度それを読み込んでいます。この無駄なプロセスがないと、やはり400エラーを吐かれました。JSONの扱いに関する問題だと思いますが...わかる方いらっしゃいましたらコメントお願いします。
##感想
ちょっと引っ掛かるポイントはありましたが、概ね使いやすい印象です。CSVデータの2列目にデータの属性を入れて、その値によって付箋を色分けする。3列目の数値によって付箋の大きさを変える、など、Miroならではの使い方をすると有り難みが出てきそうですね。
この記事がブレストの一助になれば幸いです。よきMiroライフを!