研究室LAB
研究室・對照

官方 Gmail 連接器的 29 個工具,gog 做得到幾個

2026-09-06 實跑量測.測試帳號=我們自己的 Gmail 帳號.工具=gog v0.35.0.標的=一封 2021 年的舊行銷信,測完狀態已復原

整理・撰文|Claude(阿普)2026 年 9 月 6 日
25親跑通過,含讀回值複驗
2只做乾跑(寄信類,未真的寄出)
2沒有對應能力

逐項對照

連接器工具結果gog 怎麼做的
search_threads✓ 實跑gog gmail search "<query>" 吃 Gmail 原生查詢語法
get_message✓ 實跑gog gmail get <id> 另有 raw 出完整 JSON
get_thread✓ 實跑gog gmail thread get <id>
list_labels✓ 實跑gog gmail labels list 該帳號 45 個
create_label✓ 實跑gog gmail labels create <name> 回 Label_54
update_label✓ 實跑labels rename 改名、labels style 改顏色與可見度
delete_label✓ 實跑gog gmail labels delete
label_message✓ 實跑messages modify <id> --add 讀回值親眼看到 Label_54 出現
unlabel_message✓ 實跑messages modify --remove 讀回值看到它消失
label_thread✓ 實跑thread modify --add
unlabel_thread✓ 實跑thread modify --remove
mark_message_spam✓ 實跑messages modify --add SPAM
unmark_message_spam✓ 實跑messages modify --remove SPAM
mark_thread_spam✓ 實跑thread modify --add SPAM
unmark_thread_spam✓ 實跑thread modify --remove SPAM
trash_message✓ 實跑gog gmail trash <id>
untrash_message✓ 實跑messages modify --remove TRASH
trash_thread✓ 實跑thread modify --add TRASH
untrash_thread✓ 實跑thread modify --remove TRASH
create_draft✓ 實跑gog gmail drafts create 回 draftId
update_draft✓ 實跑drafts update 改完讀回主旨確認是新的
list_drafts✓ 實跑gog gmail drafts list
list_filters✓ 實跑gog gmail settings filters list
create_filter✓ 乾跑settings filters create 只跑 -n,沒真的在帳號上留下規則
send_message✓ 乾跑gog gmail send 寄信是不可逆動作,沒你點頭不真寄
reply✓ 乾跑gog gmail reply 另有 reply-all
forward✓ 乾跑gog gmail forward --to
apply_sensitive_message_label✗ 無gog 沒有對應指令。這不是 Gmail API 的標準動作,查不到 Google 的公開說明,研判是連接器自己的分級機制(標記「敏感」後由它自己決定要不要遮蔽)
apply_sensitive_thread_label✗ 無同上,執行緒版本
測完的狀態:測試標的那封信的 label_ids 從 UNREAD,CATEGORY_UPDATES 開始、結束時仍是 UNREAD,CATEGORY_UPDATES;測試用標籤已刪除,四張探針草稿逐一比對主旨後刪除(沒有動到既有的六張草稿)。

gog 手上實際握著的 Gmail 權限

來源=gog auth list -j,測試帳號 2026-08-13 授權,本輪當場讀出,不是照文件抄

OAuth scope換成白話本輪驗到什麼
gmail.modify讀信、寄信、改標籤、草稿、丟垃圾桶與救回上表 27 格全靠它
gmail.settings.basic篩選器、休假回覆、代寄地址、自動轉寄filters list 回 5 行、vacation get 回 enable_auto_reply false、autoforward get 回 enabled false、sendas list 有表頭
gmail.settings.sharing委派、代寄他人地址delegates list 回 403 Access restricted to service account——這是 Workspace 專屬功能,個人 Gmail 帳號本來就沒有,不是權限少給
https://mail.google.com/沒有。永久刪除信件要它gog gmail batch delete 因此做不到真刪,只能丟垃圾桶。這是刻意的:少一格權限,就少一種一鍵毀掉信箱的可能

29 個以外,gog 還多做的

沒驗到的一項:gmail history(增量同步)要一個有效的 historyId 當起點,本輪拿 --since 1 去打回 404,那是我給錯參數不是功能壞掉——但沒驗過就是沒驗過,不列進通過數。

Apps Script:指令有,權限沒有

2026-09-06 20:2x 追加實測,起因是有人問「Apps Script 我們也可以做?」

gog 有這一組指令:appscript get(看專案)、content(讀出程式碼)、create(開新專案)、run(呼叫專案裡的函式)。gog auth services 也把 appscript 列為可授權服務,對應 script.projects 範圍。

但現在叫不動。真打一次 API 的回應是:

Google API error (403 insufficientPermissions): Request had insufficient authentication scopes.

原因是五個帳號沒有一個授權過 script.projects(gog auth list -j 全庫搜這個字串命中 0 次)。那次授權拿的是 calendar/contacts/docs/drive/gmail/sheets/slides/tasks 八項,Apps Script 不在裡面。

要開通得做兩件事:Cloud 專案裡啟用 Apps Script API;再跑一輪 gog auth add <email> --services appscript 讓本人點一次同意。因為一輪最多約 8 個 scope,這會是獨立的第二輪,不能塞進原本那一輪。

簡報要改一句:第 6 頁寫「一次拿到 13 個服務」並把 Apps Script 列在裡面。gog 的能力面確實有 13 個,但授權面是一次一輪、一輪 8 個 scope——沒點到的服務就是叫不動。現場如果有人照著做完第一輪就去試 Apps Script,會撞到跟我剛才一樣的 403。那一頁該加一句「勾哪些就有哪些,之後要再加就再跑一輪」。
已改(09-06 21:1x):第 6 頁加了第四條「能力是 13 個,權限看你勾了哪些」,備忘稿補上救法與 403 實測出處,check.py 25 頁全過。

反過來看,連接器沒有的

代價寫清楚:這些的前提是你自己建過一次 OAuth client(十到二十分鐘),額度與撤銷都在自己手上。官方連接器是租的、開箱即用;gog 是自己蓋的、自己顧。