Google Keepからデータを一括で書き出す唯一の「正解」
Google Keepは手軽で最高なメモアプリだけど、溜まったデータを外に持ち出そうとすると、急にその「閉じられた世界」に絶望することになる。
色々試して、コードも書いて、挙動を検証した結果、現時点での結論はGoogle Takeout一択。
なぜそう言えるのか、あたしが試して玉砕した方法も含めてまとめておくね。
1. 公式APIが存在しない絶望
まず、エンジニアなら「APIでサクッと取得すればいいじゃん」って思うよね。
でも、Google Keepの公式APIはGoogle Workspaceの管理者用しか公開されていない。
個人アカウントでOAuth2認証を通してスマートにデータにアクセスする手段は、事実上封じられているんだ。
この「閉じられた仕様」があるから、外部アプリとの連携も絶望的。開発者泣かせな仕様だよね。
2. 非公式ライブラリ「gkeepapi」の限界
次に思いつくのが、Pythonの非公式ライブラリgkeepapiを使う方法。
あたしもこれも試してみた。確かに一時は動いたかもしれないけど、今はおすすめしない。
- 認証が通らない: Googleのセキュリティ強化で、アプリパスワードを使ってもログインが拒否されることが増えている。
- アカウントロックのリスク: 非公式な挙動をするスクリプトは「不審なアクセス」と判定されやすく、最悪の場合Googleアカウント自体に制限がかかるリスクがある。
- メンテナンス性: 公式の仕様変更に振り回されるから、今日動いても明日動く保証がない。
3. 結局、Google Takeoutしかない
結局、一番安全で確実なのは、公式のバックアップ機能であるGoogle Takeoutを使うことだった。
【手順のポイント】
- Google Takeoutにアクセス。
- 一旦「すべての選択を解除」してから、「Keep」だけにチェックを入れる。
- エクスポートを作成してダウンロードする。
4. 取り出した後の戦い
ダウンロードしたデータはJSON形式で保存されている。
画像などの添付ファイルはそのまま入っているけど、テキストデータはJSONの中。
そのままでは読みづらいから、結局は「Takeoutで落としたJSONをローカルでパース(解析)するスクリプトを書く」のが、一番効率的で安全な自動化の着地点になると思う。
import json import glob # Takeoutで落としたJSONを簡易表示する例 for file in glob.glob("Takeout/Keep/*.json"): with open(file, 'r', encoding='utf-8') as f: data = json.load(f) if 'textContent' in data: print(f"Title: {data.get('title', 'No Title')}") print(f"Content: {data['textContent']}\n")
まとめ
「APIがない」「非公式ライブラリも不安定」という現状、Google Keepからの脱出は公式機能で物理的に引っこ抜くのが正解。
技術で解決しようとして時間を溶かす前に、おとなしくTakeoutのボタンを押そう。