NotionにTrelloのアーカイブを毎日記録する【Trello,Notion,Python,GCE】

自分のやったタスクを記録しておきたいとおもい,前にEvernoteにTrelloのアーカイブを保存する記事を書きました. その後Notionを知りこちらのほうが便利だと思い乗り換えたのですが,アーカイブの保存のスクリプトの切り替えがやっと終わったのでメモです GCEのcronで毎日0:00に実行してNotionに保存するようにしています

ayousanz.hatenadiary.jp

環境

使用ライブラリ

準備

pageIDとtokenの取得

DBとなるページを公開します. PAGE_IDとTOKENが必要だと言うことで,こちらのサイトを参考にして取得します.

trello側のkey,tokenの取得

こちらのページにアクセスをして,key,tokenを取得します

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

使用するライブラリをインストールします

pip install py-trello

pip install notion

Trelloからアーカイブしたカードを取得する

from trello import TrelloClient
import datetime

client = TrelloClient(
    api_key='your trello api key',
    api_secret='your trello api secret',
    token='your trello token'
)


def get_cards():

    cards = []

    board = client.get_board("board id")
    for card in board.all_cards():
        jp_time = card.dateLastActivity.astimezone(datetime.timezone(datetime.timedelta(hours=9)))
        if card.closed:
            card.dateLastActivity = jp_time
            cards.append(card)
    return cards

Notionのtableに書き込む

from notion.client import NotionClient

import get_trello_data

# login
token_v2 = 'token'
client = NotionClient(token_v2=token_v2)

url = "url"
cv = client.get_collection_view(url)

for card in get_trello_data.get_cards():
    row = cv.collection.add_row()
    row.name = card.name
    row.listName = card.get_list().name
    row.task_completion_date = card.dateLastActivity
    row.description = card.description

print("終了")

GCEにサーバーを立てて,cronで毎日実行する

GCEのサーバーの立て方等はいかのサイトを参考にしました.

qiita.com

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

  1. wget http://repo.continuum.io/archive/Anaconda3-2020.11-Linux-x86_64.sh でダウンロードして,ダウンロードしたファイルを bash Anaconda3-2020.11-Linux-x86_64.sh で実行してインストールします.

  2. pip install py-trello ,pip install notion この二つもインストールします.

NotionのAPI制限を回避するためにNotinoスクリプトの書き換え

2021-3-8現在こちらの問題によりNotionライブラリを自分でいけないみたいです. t.co

AnacondaでGUIを簡単に使う方法がすぐにわからなかったので,あきらめてviで書き換えていきましょう(数行なのでなんとかなりました)

上のissueによると store.pyclient.py を書き換えないといけないみたいなので,この二つのファイルパスを調べます.

find . -name "store.py"こちらのコマンドを使って指定したファイルを探します.

./anaconda3/lib/python3.8/site-packages/_pytest/store.py
./anaconda3/lib/python3.8/site-packages/notion/store.py
./anaconda3/pkgs/pytest-6.1.1-py38_0/lib/python3.8/site-packages/_pytest/store.py
./anaconda3/pkgs/pytest-6.2.2-py38h06a4308_2/lib/python3.8/site-packages/_pytest/store.py

という結果が返ってきたので,二番目のパスのファイルを書き換えます.

viなどの使い方は調べたらすぐに出てくると思うので割愛します.

cronの設定

crontab -e を使ってcronの設定をします

日付が変わると記事実行をしてほしいので,00:01に実行するように設定しましょう. また,エラーが出て時にもわかるようにログも残すようにします.

1 0 * * * /home/your name/anaconda3/bin/python3.8 /home/your name/save_trello_task/post_notion.py > /home/your name/save_trello_task/post_notion.log 2 > &1

参考サイト

note.com