Макросы для подсчета письмодней
Правила форума
Создание новых веток приветствуется и поощряется, однако, посмотрите основные правила.
Создание новых веток приветствуется и поощряется, однако, посмотрите основные правила.
- sergeyzwezdin
- Сообщения: 12
- Зарегистрирован: Чт дек 27, 2018 6:29 am
Re: Макросы для подсчета письмодней
За скрипты для gmail спасибо! Было бы круто иметь кнопочку в UI, которую нажимаешь и получаешь письмодни, как у Максима в аутлуке (а не лезть в shreadsheets или получать отдельное письмо по email).
Впрочем для gmail запилить это оказалось непросто — потратил немного времени и не нашел вариантов
Впрочем для gmail запилить это оказалось непросто — потратил немного времени и не нашел вариантов
- Дмитрий Неумойчев
- Сообщения: 284
- Зарегистрирован: Пт июл 10, 2015 10:50 am
- Контактная информация:
Re: Макросы для подсчета письмодней
Угу, заморочено.
https://developers.google.com/gmail/add ... quickstart - позволяет запилить кнопку в новый боковой сайдбар, на всякий случай название гайда Quickstart: Gmail Add-on , а то урл кажется в общий хелп идет.
Получилось сделать кнопку из хелпа. Правда для работы надо выделить письмо. Можно ли без этого обойтись мне уже лениво разбираться. (должно быть можно, календарь то работает)
Код скрипта:
Манифест (в скриптоИДЕ вид-показать файл манифеста), от квикстарта изменены разрешения - выброшен доступ к текущему письму, добавлен ридонли доступ к ящику (ну и заголовок изменен)
https://developers.google.com/gmail/add ... quickstart - позволяет запилить кнопку в новый боковой сайдбар, на всякий случай название гайда Quickstart: Gmail Add-on , а то урл кажется в общий хелп идет.
Получилось сделать кнопку из хелпа. Правда для работы надо выделить письмо. Можно ли без этого обойтись мне уже лениво разбираться. (должно быть можно, календарь то работает)
Код скрипта:
Код: Выделить всё
//функция, которая уже встречалась выше по ветке, выброшена запись в таблицу, включен возврат значения
function getMailDays(accessToken) {
GmailApp.setCurrentMessageAccessToken(accessToken);
var threads = GmailApp.getInboxThreads();
//Добавляем еще других лейблов
// var extra_labels = ["starred"];
// for (var i = 0; i < extra_labels.length; i++) {
// Array.prototype.push.apply(threads, GmailApp.getUserLabelByName(extra_labels[i]).getThreads());
// }
Array.prototype.push.apply(threads, GmailApp.getStarredThreads()); //Папка "Помеченные
var messages = GmailApp.getMessagesForThreads(threads);
var multiplier = 1000*60*60*24;
var now = new Date()
var maildays = 0;
for (var i = 0; i < threads.length; i++) {
var messages=threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
maildays+=(now - messages[j].getDate())/multiplier;
}
}
return maildays;
}
// искромсанный квикстарт
/**
* Copyright Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Returns the array of cards that should be rendered for the current
* e-mail thread. The name of this function is specified in the
* manifest 'onTriggerFunction' field, indicating that this function
* runs every time the add-on is started.
*
* @param {Object} e The data provided by the Gmail UI.
* @return {Card[]}
*/
function buildAddOn(e) {
// Activate temporary Gmail add-on scopes.
var accessToken = e.messageMetadata.accessToken;
GmailApp.setCurrentMessageAccessToken(accessToken);
// Build the main card after adding the section.
var card = CardService.newCardBuilder()
.setHeader(CardService.newCardHeader()
.setTitle('MD = ' + getMailDays()) //собственно письмодни выводятся в заголовке
.setImageUrl('https://www.gstatic.com/images/icons/material/system/1x/label_googblue_48dp.png'))
.build();
return [card];
}
Код: Выделить всё
{
"oauthScopes": [
"https://www.googleapis.com/auth/gmail.addons.execute",
"https://www.googleapis.com/auth/gmail.readonly"
],
"gmail": {
"name": "Mailday counter",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/label_googblue_24dp.png",
"contextualTriggers": [{
"unconditional": {
},
"onTriggerFunction": "buildAddOn"
}],
"openLinkUrlPrefixes": [
"https://mail.google.com/"
],
"primaryColor": "#4285F4",
"secondaryColor": "#4285F4"
}
}
- Рашит Азизбаев
- Сообщения: 4
- Зарегистрирован: Ср фев 13, 2019 11:51 pm
Re: Макросы для подсчета письмодней
Ага, спасибо, исправил в оригиналеLomelind писал(а): ↑Пт фев 15, 2019 1:46 amНе дождавшись ответа, полезла гуглить.
обрела https://www.toptal.com/software/definit ... nipulation
С месяцем точно косяк: январь - это 0, а не 1 месяц!
так что там ещё единица нужна:)
в своём скрипте добавила
С днём интереснее
вместо getday там надо getdate
тогда работает правильно
итого, последняя строчка sheet.appendRow([now.getDate() + '.' + (now.getMonth()+1) + '.' + now.getFullYear(), maildays]);
- sergeyzwezdin
- Сообщения: 12
- Зарегистрирован: Чт дек 27, 2018 6:29 am
Re: Макросы для подсчета письмодней
Ага, но рассчиатно это у них на другой сценарий — когда требуется что-то с сообщением сделать (данные там из CRM потянуть).Дмитрий Неумойчев писал(а): ↑Вс фев 17, 2019 9:58 pmУгу, заморочено.
https://developers.google.com/gmail/add ... quickstart - позволяет запилить кнопку в новый боковой сайдбар, на всякий случай название гайда Quickstart: Gmail Add-on , а то урл кажется в общий хелп идет.
Получилось сделать кнопку из хелпа. Правда для работы надо выделить письмо. Можно ли без этого обойтись мне уже лениво разбираться. (должно быть можно, календарь то работает)
По другому, гугл не дает расширения деать.
Нельзя. Удобгий у них SDK.Дмитрий Неумойчев писал(а): ↑Вс фев 17, 2019 9:58 pmМожно ли без этого обойтись мне уже лениво разбираться. (должно быть можно, календарь то работает)
Я попробовал сделать плагин для хрома на основе InboxSDK, но там тоже заморочек хватает — кнопка на тулбаре появляется только при выделении письма в спике.
Re: Макросы для подсчета письмодней
Странно, что по эти два макроса получают совершенно разные результаты. В моем случае результат отличается где-то в 5 раз.
Re: Макросы для подсчета письмодней
Нашёл исключение в опубликованных макросах. Они выгружают для анализа максимум 500 писем.
т.е. если в инбоксе >500 писем, то письмодни будут считаться неправильно.
Поэтому объединил 2 опубликованных макроса и немного дописал функционал.
Теперь макрос поддерживает не больше 5500 писем в инбоксе.
Если больше, то скрипт начинает упираться в ограничение по времени выполнения от Google Script (тестировал на 7500)
4 простых шага как ежедневно и автоматически
считать #письмодни в Gmail (с графиком в Google Таблицах),
даже если Вы не сильно разбираетесь в макросах для Gmail:
https://script.google.com/d/1hgXOPw-YOJ ... usQ7Z/edit
т.е. если в инбоксе >500 писем, то письмодни будут считаться неправильно.
Поэтому объединил 2 опубликованных макроса и немного дописал функционал.
Теперь макрос поддерживает не больше 5500 писем в инбоксе.
Если больше, то скрипт начинает упираться в ограничение по времени выполнения от Google Script (тестировал на 7500)
4 простых шага как ежедневно и автоматически
считать #письмодни в Gmail (с графиком в Google Таблицах),
даже если Вы не сильно разбираетесь в макросах для Gmail:
https://script.google.com/d/1hgXOPw-YOJ ... usQ7Z/edit
- Дмитрий Неумойчев
- Сообщения: 284
- Зарегистрирован: Пт июл 10, 2015 10:50 am
- Контактная информация:
Re: Макросы для подсчета письмодней
В скрипте от Рашита (если только я его не сломал пока настраивал) есть еще неоднозначный момент - прилетает новое письмо в длинную цепочку и у меня сразу вылетает +290 дней письмодолга. Похоже считаются все письма цепочки, или по первому, а не по последнему. Развитие от e.zhrv не проверял.
Re: Макросы для подсчета письмодней
Создал на выходных плагин для chrome (chromium) которые по клику на иконке плагина показывает "письмодни" для Today задач в сервисе DoIt.im. Это сервис для управления задачами по методу пустого inbox'a
Код можно посмотреть тут
https://github.com/zver/doit-metric
Сам плагин не публиковал в каталоге приложений chrome, поэтому для установки нужно сделать следующее.
* скачать https://github.com/zver/doit-metric/archive/master.zip
* распаковать архив
* в разделе управления расширениями браузера нажать "Загрузить распакованное расширение" и указать директорию куда распаковали. Появится значок в виде графика на панели браузера с расширениями.
Для работы плагина вы должны быть авторизованы в doit.im
Код можно посмотреть тут
https://github.com/zver/doit-metric
Сам плагин не публиковал в каталоге приложений chrome, поэтому для установки нужно сделать следующее.
* скачать https://github.com/zver/doit-metric/archive/master.zip
* распаковать архив
* в разделе управления расширениями браузера нажать "Загрузить распакованное расширение" и указать директорию куда распаковали. Появится значок в виде графика на панели браузера с расширениями.
Для работы плагина вы должны быть авторизованы в doit.im
- sergeyzwezdin
- Сообщения: 12
- Зарегистрирован: Чт дек 27, 2018 6:29 am
Re: Макросы для подсчета письмодней
А какой смысл считать это для списка задач и тем более в Today? Мы можем прокрастинировать задачи просто никогда не перенося их в Today, например.
Re: Макросы для подсчета письмодней
У меня основная проблема при работе с этим методом в том что к концу дня остаются задачи, запланированные на Today. Амбициозно оцениваю свои возможности на день. Некоторые задачи переносятся на другой день. И вот отслеживание такой метрики мне помогает понимать насколько все плохо и лучше оценивать вечером насколько я лишнего напланировал в задачах-днях. Да, в этом плагине для DoIt.im корректнее будет называть метрику задача-дни, нежели письмодни.
Inbox в DoIt.im я очищаю без проблем в начале каждого дня, размещая задачи по нужным другим папкам.
В любом случае поменяв буквально одно слово в коде этого плагина можно оценивать другую папку с задачами, либо реализовать показ метрики по каждой папке, но руки не дошли, мне хватает метрики для Today.
Inbox в DoIt.im я очищаю без проблем в начале каждого дня, размещая задачи по нужным другим папкам.
В любом случае поменяв буквально одно слово в коде этого плагина можно оценивать другую папку с задачами, либо реализовать показ метрики по каждой папке, но руки не дошли, мне хватает метрики для Today.