Reputation: 1
I am trying to automatically split some data coming in my spreadsheet. I want to split it at two points. The first point being @
and the second point being x
. For example, let's say blah blah blah @ NYC x ten
would be blah blah blah/ nyc/ ten
. 3 different cells instead of 1.
How do I solve the problem?
function getME() {
var response =UrlFetchApp.fetch(url +"/getMe");
Logger.log(response.getContentText());
}
function getUpdates() {
var response =UrlFetchApp.fetch(url +"/getUpdates");
Logger.log(response.getContentText());
}
function setWebhook() {
var response =UrlFetchApp.fetch(url +"/setWebhook?url=" + webAppUrl);
Logger.log(response.getContentText());
}
function doGet (e) {
return HtmlService.createHtmlOutput("Hello" +JSON.stringify(e));
}
function doPost(e) {
var contents= JSON.parse(e.postData.contents);
GmailApp.sendEmail(Session.getEffectiveUser().getEmail(),"Telegram Bot Update",JSON.stringify(contents,null,4))
var name = contents.message.from.first_name;
var text = contents.message.text;
var id = contents.message.from.id;
SpreadsheetApp.openById(ssId).appendRow ([text]);
}
function splitIntoThree() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
var sA=vA[i][0].toString().split(/[@x]/);
if(sA.length==3) {
vA[i].splice(0,1,sA[0],sA[1],sA[2]);
}
}
sh.getRange(2,1,vA.length,3).setValues(vA);
}
Upvotes: 0
Views: 319
Reputation: 64100
Try:
var s="blah blah blah @ NYC x ten"
var a=s.split(/[@x]/);
Doing it to a column:
function splitIntoThree() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet178');
var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
var sA=vA[i][0].toString().split(/[@x]/);
if(sA.length==3) {
vA[i].splice(0,1,sA[0],sA[1],sA[2]);
}
}
sh.getRange(2,1,vA.length,3).setValues(vA);
}
Sheet Before:
Sheet After:
Upvotes: 1