あるアカウントのGoogle Keepを他のアカウントに全てコピーした
TL;DR
Google Keepの中身を他のアカウントに全コピーするPythonスクリプトを書いた。
経緯
今日、デザイナーさん達が隣でこんな話をしていた。
「諸事情でgoogleアカウントが使えなくなってしまうから、Google Keepで書いたメモ、他の自分のアカウントに移さないといけないんだよねえ」
「そうそう、あのコミュニティのGoogleアカウントのGoogle Keepでひたすら二年間メモしまくってきてたくさんあるから移すのめんどくさいなあ」
「これ一々手動でコピーしなきゃいけないよえ、めんどくさいねえ」
...
...
ぼく「...それ自動化できません?」
ここに言い出しっぺの法則が発動した。
「努力は楽をするためにある」が私の信条なので、私はワンパンでコピーができなければ気がすまなかった。
要するに極度のめんどくさがりなのである。
なんの生産性もない悲しい時間なんてなくなってしまえばいい。
あわよくば自動化の見返りとしてセブンイレブンのホットコーヒー(L)をおごってくれれば更に良い。
そんなわけで「極度のめんどくさがり VS ルーティンワーク」が始まった。
調査
最初はGoogle APIをコマンドで叩けばワンパンだろ。。。と思っていたが、調べたらそもそもGoogle Keepには公式のGoogle APIがなかった。
Google APIとはコマンドを叩けばグーグルのサービスをいろいろごにょごにょできるツール。例えば、ダウンロードとかアップロードとかをプログラミングで実行してくれる。何がいいかって、やりようによってはcronなどと併用すればアップロードやダウンなどを自動化できる。
「それ自動化できません?」と言った手前、「できませんでした」と言ったらフルボッコにされそうだったので頑張って代替案を探した。
二種類の代替案が見つかった。
①Google TakeoutというGoogle公式バックアップサービス
まず、Google Takeoutという公式のバックアップサービスを見つけた。このサービス、Google Keepもバックアップできるが、HTMLファイルをzip形式なりtar形式なりに固めて出力される。ただ、Google Keepにそもそもインポート機能がない。 インポート機能自体はTake outしないでほしいなあ...。 なのでアカウントを跨いだデータ移行にはGoogle Takeoutは使えない。
次に、非公式ではあるものの、GithubにGoogle KeepのAPIが転がっていた。なのでありがたく使わせていただくことにした。
実装
環境
Ubuntu 18.04LTS Python3.6
pip install gkeepapi
import gkeepapi # your google account to EXPORT google keep notes export_account = gkeepapi.Keep() e = export_account.login('export_account@gmail.com', 'your_password_xxxx') # your google account to IMPORT google keep notes import_account = gkeepapi.Keep() i = import_account.login('import_account@gmail.com', 'your_password_yyyy') # Fetch your all notes from export_account notes = export_account.all() # Copy all notes for your import account for note in notes: if note.title == None: title = "" if note.text == None: text = "" print(note) print("---------------------------------") title = note.title text = note.text import_account.createNote(title=title, text=text) # Save imports import_account.sync()
このスクリプトを実行すれば、一発であるGoogleアカウント内のGoogle Keepの全データをほかのGoogleアカウントのGoogle Keepにコピーできる。
自分の日常的に使っているGoogleアカウントからGoogleサブアカウントにコピーできることを確認したので普通に動くはず。 リストも画像も全てコピーされていた。
めでたし。