Google Sheets: найдите электронное письмо в ряде электронных писем, в которых в некоторых ячейках содержится 2-3 электронных письма. - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть диапазон A2:A с электронными письмами (у нескольких ячеек в этом диапазоне есть 2 или 3 электронных письма в одной ячейке).

Кроме того, у меня есть ячейка C3, в которой есть электронное письмо. Эта C3 ячейка может содержать 1 или 2 электронных письма (как показано на скриншоте ниже, посмотрите на E3 ячейку).

И я хочу проверить, есть ли электронное письмо (или любое из электронные письма) из ячейки C3 находятся в этом диапазоне электронных писем A2:A.

Проблема состоит в том, что в нескольких ячейках содержится 2 или 3 электронных письма, и я не знаю, как l oop через каждое электронное письмо в одной ячейке.

Вот снимок экрана screenshot

Я думал о создании скрипта Служб Google, который проверяет, есть ли в ячейке 2 сообщения электронной почты, которые она принимает каждый электронная почта в этой ячейке и просматривает весь диапазон электронных писем. Но, возможно, есть более простой способ сделать это.

Надеюсь, вы понимаете, о чем я говорю :) Большое спасибо!

1 Ответ

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

Попробуйте это:

function findEmails() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1');
  var vA=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn()).getValues();
  var list=sh.getRange(1,1,sh.getLastRow()-1,1).getValues().map(function(r){return r[0]}).filter(function(e){return e;});
  var found=[];//stores the email found and the cell it came from in A1 notation
  for(var i=0;i<vA.length;i++) {
    if(vA[i][2]) {
      var emA=vA[i][2].toString().split('\n');emA.forEach(function(e,j){var idx=list.indexOf(e);if(idx>-1){found.push({email:e,location:sh.getRange(i+1,3).getA1Notation()});}});
    }
    if(vA[i][4]) {
      var emA=vA[i][4].toString().split('\n');emA.forEach(function(e,j){var idx=list.indexOf(e);if(idx>-1){found.push({email:e,location:sh.getRange(i+1,5).getA1Notation()});}});
    }
  }
  Logger.log(found);
}

Это то, что было найдено в моем примере:

[{location=C1, email=email4@gmail.com}, 
{location=E1, email=email7@gmail.com}, 
{location=E1, email=email13@gmail.com}]

Эти электронные письма не будут такими же, как ваши, поскольку я использовал свои собственные данные , Но вы можете получить представление о том, как это сделать, просмотрев код. Я ожидаю, что электронные письма всегда будут разделены '\ n' (переводом строки);

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