andy
andy

Reputation: 1

Split in script editor using google apps

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

Answers (1)

Cooper
Cooper

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:

enter image description here

Sheet After:

enter image description here

Upvotes: 1

Related Questions