Подтвердить что ты не робот

Как разработать расширение Chrome для Gmail?

Я думаю о разработке расширения Chrome для Gmail, и я хочу знать, какие текущие лучшие практики.

Например:

  • привязка подписи GPG по умолчанию к каждому письму
  • добавление дополнительной кнопки, которая что-то делает (у меня уже есть)
  • захват действий отправки электронной почты и побуждение меня сделать что-то завершенное
  • ...
  • (только примеры, помогающие мне узнать, что возможно)

Существует немало заметных расширений, которые значительно увеличивают функциональность gmail:

Один из вариантов заключается в том, чтобы заглянуть в их источник, который находится здесь ~/Library/Application Support/Google/Chrome/Default

Но, может быть, есть (желаемое за действительное) хорошее учебное пособие/множество практик о том, как возиться с интерфейсом и функциональностью gmail?

Gmail extension/gadget API - как добавить кнопку в панель инструментов компоновки?

Вам нужно будет создать и ввести программу программно. Это будет включать в себя довольно немного очистки исходного кода Gmail (спойлер: он уродливый).

Как создать расширение chrome для добавления панели в окна gmail?

Самая большая долгосрочная задача, с которой вы столкнетесь, заключается в том, что макет gmail неожиданно изменится и нарушит обнаружение электронной почты или измененный интерфейс. Оба эти вопроса требуют некоторой уловки для решения или потребуют от вас остаться ночью, задаваясь вопросом, вдруг ли Google сломает ваше расширение.

http://www.jamesyu.org/2011/02/05/introducing-gmailr-an-unofficial-javscript-api-for-gmail/

Все они строят сложные API-интерфейсы с аналогичной функциональностью, которые могут все ломаться независимо, если Gmail решит существенно изменить структуру своего приложения (что неизбежно будет).

Gmail запускает свой код через компилятор замыкания, тем самым запутывая все. Кроме того, Gmail, вероятно, является одним из самых сложных приложений javascript.

Библиотека основателя Parse - https://github.com/jamesyu/gmailr - но не обновилась через 1,5 года.


Я могу показать вам, что я получил до сих пор, и просто знаю, что мне не особенно нравятся селекторы, такие как .oh.J-Z-I.J-J5-Ji.T-I-ax7

Примечание: http://anurag-maher.blogspot.co.uk/2012/12/developing-google-chrome-extension-for.html (он также делает это, он также использует такие запутанные селекторы)

manifest.json

"content_scripts": [
  {
    "matches": ["https://mail.google.com/*"],
    "css": ["mystyles.css"],
    "js": ["jquery-2.1.0.js", "myscript.js"]
  }
]

myscript.js

var icon = jQuery(".oh.J-Z-I.J-J5-Ji.T-I-ax7")
var clone = icon.clone();
clone.attr("data-tooltip", "my tooltip");
clone.on("click", function() {
    jQuery(".aDg").append("<p class='popup'>... sample content ...</p>");
});
icon.before(clone);

(повторное использование существующих элементов пользовательского интерфейса, поэтому мои функции выглядят изначально)


https://developers.google.com/gmail/gadgets_overview

Существуют гаджеты боковой панели и контекстные гаджеты, но они не предлагают то, что я хочу достичь.

Лаборатории Gmail - это полигон для экспериментальных функций, которые не совсем готовы к прайм-тайму. Они могут меняться, ломаться или исчезать в любое время.

https://groups.google.com/forum/#!forum/gmail-labs-suggest-a-labs-feature Похоже, что способность разрабатывать Лаборатории Gmail заблокирована для сотрудников Google.

https://developers.google.com/gmail/

Нужна помощь? Найдите нас в Qaru под тегом gmail.


Итак, да, мне бы очень хотелось узнать, есть ли там учебники/справочные материалы?

(Я рассмотрел многие "похожие вопросы", и я боюсь, что мои варианты здесь ограничены, но я был бы очень доволен, если бы я укрепил свое просвещение на меня)

4b9b3361

Ответ 1

Похоже, вы не наткнулись на проект gmail.js. Он предоставляет богатый API, позволяющий работать с Gmail. Однако учтите, что этот проект не поддерживается Google. Это означает, что любые изменения в Gmail могут нарушить ваше расширение, и нет никакой гарантии, что кто-то захочет обновить gmail.js, чтобы устранить эти изменения.

Ответ 2

Просто наткнулся на этот блогпост из Square Engineering Team http://corner.squareup.com/2014/09/a-different-kind-of-scaling-problem.html

Это расширение chrome, которое отображает контактную информацию на боковой панели Gmail, когда пользователь наводит на контакт по электронной почте. (Так же, как и Rapportive)

Ниже приведено содержание script приложения. Он работает следующим образом:

  • Проверьте, является ли текущая страница открытой электронной почтой с помощью document.location.href != currentUrl (для этого вы также можете использовать gmail.js gmail.observe.on("open_email",function())).

  • Получить элемент DOM, содержащий адрес электронной почты. Я узнал, что этот селектор работает для отправителя: $(".acZ").find(".gD")

  • Вставьте элемент на боковой панели с помощью injectProfileWidget()

Я работаю над аналогичным расширением, которое отображает контактную информацию, извлеченную из Mixpanel здесь, если вы заинтересованы.

Ответ 3

Здесь есть хороший API для взаимодействия с DOM Gmail:

https://www.inboxsdk.com/docs/

Пример начала работы поможет вам добавить кнопку на панель инструментов компоновки.

// Compose Button
InboxSDK.load('1.0', 'Your App Id Here').then((sdk) => {
    sdk.Compose.registerComposeViewHandler((composeView) => {
        composeView.addButton({
            title: 'Your Title Here',
            iconUrl: 'Your Icon URL Here',
            onClick: (event) => {
                event.composeView.insertTextIntoBodyAtCursor('This was added to the message body!')
            }
        })
    })
})