Optimization 组织数据的编码
因此,我在电子表格中有大约2000个条目,其中包含一些公司的数据。数据组织如下: 公司名称:…Optimization 组织数据的编码,optimization,google-apps-script,google-sheets,Optimization,Google Apps Script,Google Sheets,因此,我在电子表格中有大约2000个条目,其中包含一些公司的数据。数据组织如下: 公司名称:…电子邮件:…电话号码:…网站:…地址:…公司名称:…电子邮件:…电话号码:
电子邮件:…
电话号码:…
网站:…
地址:…
公司名称:…
电子邮件:…
电话号码:<等等 我想要的是写一个函数,在列下面的另一个电子表格中组织它 公司名称电子邮件电话号码Web
我写了这个函数的介绍
function OrganizeData()
{var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Orginial");
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Organized");
但我不知道如何编写代码,将某个关键字(电子邮件)后的文本从电子表格的一行复制到电子表格2中的另一列 这有点像猜测,但会将垂直定位的数据转换为列
function testGetData()
{
getData('SpreadSheetID','Sheet1','Sheet2');
}
function getData(spreadsheetId,inputSheetName,outputSheetName)
{
var ss=SpreadsheetApp.openById(spreadsheetId);
var inpsh=ss.getSheetByName(inputSheetName);
var outsh=ss.getSheetByName(outputSheetName);
var inrg=inpsh.getDataRange();
var invA=inrg.getValues();
var outA=[];
var n=0;
outA.push(['Name','Email','Phone','Web','Address','Error']);
var row=[];
for(var i=0;i<invA.length;i++)
{
var vA=[];
vA=String(invA[i][0]).split(':');//assuming data is in one string
if(vA.length<2)//assuming data is split into first two columns with no : in the string
{
vA.push(invA[i][1]);
}
switch(vA[0])
{
case 'Company name':
row['Name']=String(vA[1]).trim();//trim off whitespace both ends
break;
case 'Email':
row['Email']=String(vA[1]).trim();
break
case 'Phone no':
row['Phone']=String(vA[1]).trim();
break;
case 'Web':
row['Web']=String(vA[1]).trim();
break;
case 'address':
row['Address']=String(vA[1]).trim();
outA.push([(typeof(row.Name)!='undefined')?row.Name:'',(typeof(row.Email)!='undefined')?row.Email:'',(typeof(row.Phone)!='undefined')?row.Phone:'',(typeof(row.Web)!='undefined')?row.Web:'',(typeof(row.Address)!='undefined')?row.Address:'',(typeof(row.Error)!='undefined')?row.Error:'']);
break;
default:
row['Error']=Utilities.formatString('Row Error: Index: %s vA[0]= %s vA[1]= %s',i,(typeof(vA[0])!='undefined')?vA[0]:'Not Defined',(typeof(vA[1])!='undefined')?vA[1]:'Not Defined');
break;
}
}
var otrg=outsh.getRange(1,1,outA.length,outA[0].length);//determine size of output array Its good to have headers for this
otrg.setValues(outA);
}
函数testGetData()
{
getData('SpreadSheetID','Sheet1','Sheet2');
}
函数getData(电子表格ID、inputSheetName、outputSheetName)
{
var ss=电子表格应用程序openById(电子表格ID);
var inpsh=ss.getSheetByName(inputSheetName);
var outsh=ss.getSheetByName(outputSheetName);
var inrg=inpsh.getDataRange();
var invA=卢比getValues();
var outA=[];
var n=0;
推送(['Name'、'Email'、'Phone'、'Web'、'Address'、'Error']);
var行=[];
对于(var i=0;iYou需要按:
进行拆分,并使用正则表达式和转置。在当前状态下,您的问题太广泛,不太可能得到答案。而且您提供的数据格式太模糊,无法给出任何解决方案。请为您的数据提供一个屏幕截图和一个虚拟表,其中精确位置为:
,,
,sp字符之间的ACE、字数、所有数据的位置是否在同一单元格(一列)中或者分散在不同的列中,无论字符串是否有结尾,所有数据是否都包含电话号码?地址和下一个公司名称之间是否总是有一个空行?等等..你能给我们一个原始表中数据的代表性样本,以便我们进行测试吗。
function getData(spreadsheetId,inputSheetName,outputSheetName)
{
var ss=SpreadsheetApp.openById(spreadsheetId);
var inpsh=ss.getSheetByName(inputSheetName);
var outsh=ss.getSheetByName(outputSheetName);
var inrg=inpsh.getDataRange();
var invA=inrg.getValues();
var outA=[];
var n=0;
outA.push(['Name','Email','Phone','Web','Address','Error']);
var row=[];
for(var i=0;i<invA.length;i++)
{
var vA=[];
vA=String(invA[i][0]).split(':');//assuming data is in one string
if(vA.length<2)//assuming data is split into first two columns with no : in the string
{
vA.push(invA[i][1]);
}
switch(vA[0])
{
case 'Company name':
row['Name']=String(vA[1]).trim();//trim off whitespace both ends
break;
case 'Email':
row['Email']=String(vA[1]).trim();
break
case 'Phone no':
row['Phone']=String(vA[1]).trim();
break;
case 'Web':
row['Web']=String(vA[1]).trim();
break;
case 'address':
row['Address']=String(vA[1]).trim();
outA.push([(typeof(row.Name)!='undefined')?row.Name:'',(typeof(row.Email)!='undefined')?row.Email:'',(typeof(row.Phone)!='undefined')?row.Phone:'',(typeof(row.Web)!='undefined')?row.Web:'',(typeof(row.Address)!='undefined')?row.Address:'',(typeof(row.Error)!='undefined')?row.Error:'']);
row['Name']='';//cleared out the row array
row['Email']='';
row['Phone']='';
row['Address']='';
row['Error']='';
break;
default:
row['Error']=Utilities.formatString('Row Error: Index: %s vA[0]= %s vA[1]= %s',i,(typeof(vA[0])!='undefined')?vA[0]:'Not Defined',(typeof(vA[1])!='undefined')?vA[1]:'Not Defined');
outA.push(['','','','','',row.Error]);//output errors on separate lines
row['Error']='';//cleared errors
break;
}
}
var otrg=outsh.getRange(1,1,outA.length,outA[0].length);//determine size of output array Its good to have headers for this
otrg.setValues(outA);
}