kirintropのブログ

はるか遠いミニマリストへの道です。

GoogleKeepから外に出す話。

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を使うことだった。

【手順のポイント】

  1. Google Takeoutにアクセス。
  2. 一旦「すべての選択を解除」してから、「Keep」だけにチェックを入れる。
  3. エクスポートを作成してダウンロードする。

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のボタンを押そう。

kirintropは、Amazon.co.jpを宣伝しリンクすることによって
サイトが紹介料を獲得できる手段を提供することを目的に設定された
アフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。