18

我想弄清楚如何將一個按鈕添加到Gmail撰寫窗口。Gmail擴展/小工具API - 如何將按鈕添加到撰寫工具欄?

在「Gmail實驗室」中,他們有一些擴展可以添加某些按鈕例如「發送&存檔」按鈕和「插入圖像」按鈕,所以我認爲這是可能的。

我檢查了它們的API here,您似乎可以將小工具添加到左側邊欄或使用依賴於消息上下文的上下文小工具。我正在尋找一種方法將一個按鈕添加到撰寫窗口的工具欄中,並且這兩個選項似乎都不支持它。

你知道這件事怎麼辦?

如果使用Gmail API無法實現,是否有另一種方法可以實現這一目標?也許通過創建Google Chrome擴展程序或用戶腳本?

我會很感激任何信息,可以指導我在正確的方向。

謝謝。

+0

你有沒有通過這方面的工作? – 2016-02-02 06:57:05

+1

請參閱http://stackoverflow.com/a/35192213/165673我的解決方案 – Yarin 2016-02-04 03:59:15

回答

23

Gmail實驗室具有特殊權限,因爲它們是由Google員工編寫的,不幸的是,我們凡人都沒有這種權力。當然有一種方法,你已經正確地指出它是製作一個Chrome Extension或一個UserScript。如果您選擇做Chrome擴展程序it will just be a wrapper for a UserScript anyway

您將不得不以編程方式創建並注入按鈕。這將涉及到很多Gmail源代碼的沖刷(劇透:這很醜陋)。

沒有關於您想要做什麼的更多詳細信息,我將無法提供更多幫助,但我可以立即爲您解決一個問題。您必須讓腳本等到Gmail加載過程完成,這是一個挑戰。這是我目前在極簡主義中使用的解決方案:

function bootstrap() { 
    target = document.querySelectorAll('.vt:not(.SFzvCe)'); 
    if (document.querySelectorAll('html.xiu1Fc, html.aao')[0] == null) { 
     return; 
    } 
    if (target.length > 0) { 
     // loaded, do stuff 
    } else { 
     window.setTimeout(bootstrap, 200); 
    } 
} 
window.addEventListener('DOMSubtreeModified', bootstrap); 

該版本等待聊天完全加載。讓我知道如果您有任何其他問題:@anstosa

+0

非官方API的任何指針或如何從GMail用戶界面提取元素? – 2012-08-03 09:08:01

+3

我唯一知道的就是James Yu的[Gmailr](http://www.jamesyu.org/2011/02/05/introducing-gmailr-an-unofficial-javscript-api-for-gmail/)。我沒有親自使用它,但是我已經看過了代碼,它執行得非常好,功能也相當完整。 – 2012-08-03 15:02:40

+1

在這一點上[gmail.js](https://github.com/KartikTalwar/gmail.js)看起來像是由Gmailr啓發的更好的圖書館。還有一個[chrome擴展](https://github.com/KartikTalwar/gmail-chrome-extension-boilerplate)項目可以幫助你入門。 – Yarin 2016-02-03 13:19:26