![](/img/trans.png)
[英]Extracting data from gmail into a spreadsheet using Google Apps scripts
[英]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.