Количество писем в Gmail по сценариям - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь посчитать все свои электронные письма с пометкой «выполнено - другие» с помощью Google Scripts. Дело в том, что запрос не учитывает все электронные письма. Если я загляну в ярлык, то у меня будет, по крайней мере, 21 тыс. Тем, и сценарий подсчитает мне всего 591 электронное письмо.

Знаете ли вы, как я могу это исправить?

Спасибо!

label search emails.

Пример кода:

`function countMessages3() {

  var spreadsheet = SpreadsheetApp.getActive()
  SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName('Mails'))

  var threads = GmailApp.search('in:sent');

  var receivedCount = 0;


  for(var i=0; i<threads.length; i++)
  {
    receivedCount = receivedCount + threads[i].getMessageCount();

  }

  spreadsheet.getRange('\'Mails\'!B4').setValue(receivedCount);`

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Полагаю, код, который вы указали, - поиск сообщений в отправленной папке. Для поиска сообщений в ярлыке, я думаю, вы делаете что-то вроде:

1. Получите ярлык, используя getUserLabelByName() https://developers.google.com/apps-script/reference/gmail/gmail-app.html#getuserlabelbynamename

2. Получите все темы для этой метки используйте getThreads() https://developers.google.com/apps-script/reference/gmail/gmail-label.html#getthreads

3. Затем агрегированные сообщения подсчитываются в каждом потоке с использованием getMessageCount() https://developers.google.com/apps-script/reference/gmail/gmail-thread.html#getmessagecount

Примерно так:

var labelName = "complete-others";
var messageCount = 0;

var label = GmailApp.getUserLabelByName(labelName);
var threads = label.getThreads();
threads.forEach(function(thread) {
    messageCount += thread.getMessageCount();
});

spreadsheet.getRange('\'Mails\'!B4').setValue(messageCount);
0 голосов
/ 04 февраля 2020

Вот функция, которая будет считать ваши электронные письма.

function countEmailsWithLabel(query) {
  var n=0;
  var ts=GmailApp.search(query);
  ts.forEach(function(t,i){
    var ms=t.getMessages();
    n+=ms.length;
  });
  Logger.log(n);
  return n;
}

Конечно, проблема в том, чтобы выяснить, каким должен быть поисковый запрос. У меня есть несколько тестовых электронных писем в ярлыке, который я создал как «Q0 / TEST», но там, где я ищу в Gmail, я вижу, что это «label: q0-test», что не соответствует моему ярлыку. Поэтому я попытался выполнить поиск по поисковому запросу «label: q0-test», и это не сработало. Итак, теперь я использую запрос с меткой, как я его создал, чтобы поисковый запрос теперь был «метка: Q0 / TEST», и я получил правильный результат 3. Поэтому я бы рекомендовал вам использовать метки так, как вы их создали, а не чем то, что вы видите в окне поиска в поиске Gmail.

На самом деле я столкнулся с этим несоответствием несколько недель go и подозреваю, что это, вероятно, вызвало некоторые трудности для новых программистов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...