簡體   English   中英

從電子表格中提取郵件

[英]Extracting mails from a spreadsheet

我有一個帶有兩列的Google Spreadsheet。

第一列包括引薦來源網址的名稱,第二列包括自由格式的文本,其中提到了一些引薦的電子郵件地址。 一個單元格中可能有多個電子郵件地址,或者一個都沒有。

例如:

Referrer | Referral
--------------------------------------------------------------------------
Mister X | I would like to refer somebody@gmail.com and somebodyelse@outlook.com
Miss Y   | myfriend@mail.com
Mister Z | None!
etc      | ...

我想格式化數據,以便為每個被引用的地址提供被推薦人和被推薦的電子郵件地址。

例如:

Referrer | Referral
--------------------------------------------------------------------------
Mister X | somebody@gmail.com
Mister X | somebodyelse@outlook.com
Miss Y   | myfriend@mail.com
etc      | ...

實現此目標的最佳方法是什么?

這是表格中的原始數據。

Referrer    Referral
Mister X    I would like to refer somebody@gmail.com and somebodyelse@outlook.com
Miss Y  myfriend@mail.com
Mister Z    None!

它們被覆蓋后,這些都是相同的列。

Referrer    none
Mister X    somebody@gmail.com
Mister X    somebodyelse@outlook.com
Miss Y  myfriend@mail.com
Mister Z    none

這是代碼。 目前,您選擇了我們所顯示的兩列,而我以您要求的格式覆蓋了它們。 盡管數據集如此有限,但永遠無法100%確定。 因此,進一步測試將是不錯的。 我包括了菜單和一些顯示例程,這些例程可以幫助我調試程序。 我想您可能想更改范圍。 去吧。 玩得開心。 我喜歡寫它。

function onOpen()
{
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('My Tools')
        .addItem('Extract Emails','emailFishing')
        .addToUi();
}


    function emailFishing()
{
  var rng = SpreadsheetApp.getActiveRange();
  var rngA = rng.getValues();
  var resultsA = [];
  //var s = '[';
  for(var i = 0;i < rngA.length; i++)
  {
    if(rngA[i][1])
    {
      matchA = extractEmails(rngA[i][1]);
      if(matchA)
      {
        for(var j = 0; j < matchA.length;j++)
        {
           resultsA.push([rngA[i][0], matchA[j]]);
           //s += '[' + rngA[i][0] + ', ' + matchA[j] + '], '
        }
      }
      else
      {
        resultsA.push([rngA[i][0],'none']);
        //s += '[' + rngA[i][0] + ', \'none\'],'
      }
    }
  }
  //s += ']';
  var orng = SpreadsheetApp.getActiveSheet().getRange(rng.getRow(), rng.getColumn(), resultsA.length, resultsA[0].length);
  orng.setValues(resultsA);
  //dispStatus('Results Array', s, 500, 400);
}


function extractEmails (text)
{
    return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi);
}

function dispStatus(title,html,width,height)
{
// Display a modeless dialog box with custom HtmlService content.
  var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
  var width = typeof(width) !== 'undefined' ? width : 250;
  var height = typeof(height) !== 'undefined' ? height : 300;
  var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
  var htmlOutput = HtmlService
     .createHtmlOutput(html)
     .setWidth(width)
     .setHeight(height);
  SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
} 

函數extractEmail來自Leniel Macaferi。 從這篇文章中, 使用jquery從批量文本中提取所有電子郵件地址 雖然我省略了JQuery部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM