google addon google-chrome google-chrome-extension gmail userscripts gmail-contextual-gadgets

google chrome - addon - API de extensión/gadget de Gmail: ¿cómo agregar un botón a la barra de herramientas de composición?



gmail add on (1)

Estoy tratando de averiguar cómo puedo agregar un botón a la ventana de composición de Gmail.

En "Gmail Labs" tienen algunas extensiones que agregan ciertos botones. Por ejemplo, el botón "Enviar y archivar" y el botón "Insertar imágenes", así que asumo que esto es posible.

Revisé su API here y parece que puede agregar un gadget a la barra lateral izquierda o usar gadgets contextuales que dependen del contexto del mensaje. Estoy buscando una manera de agregar un botón a la barra de herramientas de la ventana de composición, y ambas opciones no parecen admitirlo.

¿Sabes cómo se puede hacer esto?

Si no es posible usar la API de Gmail, ¿hay otra manera de lograrlo? ¿Tal vez creando una extensión de Google Chrome o scripts de usuario?

Apreciaría cualquier información que pueda orientarme en la dirección correcta.

Gracias.


Los laboratorios de Gmail tienen permisos especiales porque están escritos por empleados de Google, desafortunadamente, los mortales no tenemos ese poder. Hay una forma de evitarlo, por supuesto, y has señalado correctamente que es hacer una extensión de Chrome o un UserScript. Si eliges hacer una extensión de Chrome, de todos modos solo será una envoltura para un UserScript

Tendrás que crear e inyectar el botón programáticamente. Esto implicará un poco de rastrear el código fuente de Gmail (spoiler: es feo).

Sin más detalles sobre lo que quiere hacer, no podré proporcionarle mucha más ayuda, pero puedo ayudarlo con un problema de inmediato. Tienes que hacer que el script espere hasta que se complete el proceso de carga de Gmail, lo cual es un reto. Esta es la solución que estoy usando actualmente en Minimalista:

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);

Esa versión espera a que el chat se cargue por completo. Déjame saber si tienes alguna otra pregunta: @anstosa