Skip to content

[Python] 使用 gkeepapi 套件存取 Google Keep

今天在研究著如何製作『自動備份小說』的小工具時,湊巧找到了個關於 Google Keep 、看起來非常方便、並非官方授權的 Python 第三方套件。這個套件可以讓我們讀取帳號底下的 Google Keep 內容,也能讓我們自動將文字、筆記一類的東西上傳道自己 Google 帳號底下的 Google Keep,可說是相當方便。

如果大家對於這個好用的小工具有興趣的話,歡迎前往開發者的 Github 上瞧瞧: https://github.com/kiwiz/gkeepapi

開發者倒是有提醒:這個 API 沒有受到 Google 官方的授權以及支持,並且仍在開發中,請不要應用在商業產品上。


簡介 Google Keep

雖然可能大家都非常擅長於使用 Google Keep 這項方便的小工具,但還是容我簡單介紹一下這個小工具吧!

Google Keep,為 Google 在 2013 年發布的一個線上筆記服務,我們可以在手機、電腦桌面環境、網頁等等的裝置,透過網路,共同編輯同一份文檔。(註:這是基於 Google 雲端硬碟)

這項工具對於需要隨時紀錄的人來說非常方便,不論是寫小說、亦或者是突然間要紀錄筆記、撰寫靈感——都是非常好用的,何況之後可以直接於其他平台讀取,繼續往下編輯。

這也是我想要自動備份小說為什麼先研究 Google Keep 的原因之一。再沒有比寫下了一小段的小說能夠於其他平台繼續往下寫更方便的事情了。


gkeepapi 的使用

我個人認為, gkeepapi 的好處在於可以『讀取現有記事』以及『發布新的記事』這兩點,所以我們也從這兩點開始解說起。

如果想要更進一步的操作解說,也許可以參考這個網站: https://gkeepapi.readthedocs.io/en/latest/#manipulating-notes

如果是第一次使用,要使用以下指令下載:

pip3 install gkeepapi

安裝結束以後,我們來看段簡單的範例。

# -*- coding: utf-8 -*-
import json
import gkeepapi

with open('Account.json', 'r', encoding='utf-8') as f:
    account = json.load(f)

keep = gkeepapi.Keep()



為了不洩漏帳號密碼,這裡我以 Json 格式讀取進我的帳號密碼。若想了解 Json 相關的操作,可以參考我寫過的 [Python] 使用 Json 套件讀寫 Json 格式文件

try:
    success = keep.login(account['UserName'], account['Password'])
except:
    print('Maybe you need to go to this website to enable permissions: https://accounts.google.com/b/0/DisplayUnlockCaptcha')
    raise



這裡是將 keep 給登入,要使用 Google 的帳號密碼。若是出現:

gkeepapi.exception.LoginException: ('NeedsBrowser', 'To access your account, you must sign in on the web. Touch Next to start browser sign-in.')

以上這樣的報錯,可以去到 https://accounts.google.com/b/0/DisplayUnlockCaptcha 這個網站給予授權。


上傳記事

首先我們先來測試上傳記事的功能。

# Create Note
note = keep.createNote('TEST', 'Today is a nice day.')
note.pinned = True
note.color = gkeepapi.node.ColorValue.Brown
keep.sync()



程式碼非常單純,便是將標題為 “TEST”、內容為 “Today is a nice day.” 的記事傳到自己的 Google Keep。

順帶一提,這行的意思:

note.color = gkeepapi.node.ColorValue.Brown



只是給予記事本顏色而已。

稍微等待一會兒,記事便已經上傳到 Google Keep 了。


讀取記事

那麼接下來,我們來讀取內容。

# READ
notes = keep.all()
for note in notes:
    if note.title == 'TEST':
        print([note.title, note.text])



Output:

['TEST', 'Today is a nice day.']

首先,我們使用 keep.all() 將所有記事讀取,然後可以分別使用 note.title 以及 note.text 查看記事的標題以及內容。

這裡我只讀取出剛才新增的記事。


修改記事

根據剛才的程式碼稍作修改,我們便可以完成『更改』記事內容的程式。

notes = keep.all()
for note in notes:
    if note.title == 'TEST':
        note.title = 'TEST 2'
        note.text = 'Today is not a nice day.'
        note.color = gkeepapi.node.ColorValue.White
        note.pinned = True

keep.sync()



Output:

這是我剛才創造的標題為 “TEST” 的記事,現在我將記事內容做了些改動,並且將記事顏色更換為白色。


刪除記事

最後,簡單講講怎麼把記事刪掉吧。

notes = keep.all()
for note in notes:
    if note.title == 'TEST 2':
        note.delete()

keep.sync()



如此一來,就把我剛才創造的 TEST 2 刪掉了。


後記

目前研究 Google Keep 的 Python 第三方套件 gkeepapi ,雖然好用,但由於沒有 Google 的支持,目前還有一些小地方存在著問題。若要真的製作出順暢的『自動備份程式』,我想研究一下該怎麼存取 Google Drive 是必須的。

Leave a Reply