自分のやったタスクを記録しておきたいとおもい,前にEvernoteにTrelloのアーカイブを保存する記事を書きました. その後Notionを知りこちらのほうが便利だと思い乗り換えたのですが,アーカイブの保存のスクリプトの切り替えがやっと終わったのでメモです GCEのcronで毎日0:00に実行してNotionに保存するようにしています
環境
使用ライブラリ
準備
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のサーバーの立て方等はいかのサイトを参考にしました.
Anacondaのインストール&ライブラリのインストール
wget http://repo.continuum.io/archive/Anaconda3-2020.11-Linux-x86_64.sh
でダウンロードして,ダウンロードしたファイルをbash Anaconda3-2020.11-Linux-x86_64.sh
で実行してインストールします.pip install py-trello
,pip install notion
この二つもインストールします.
NotionのAPI制限を回避するためにNotinoスクリプトの書き換え
2021-3-8現在こちらの問題によりNotionライブラリを自分でいけないみたいです. t.co
AnacondaでGUIを簡単に使う方法がすぐにわからなかったので,あきらめてviで書き換えていきましょう(数行なのでなんとかなりました)
上のissueによると store.py
と client.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