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