Auto sort data by date on spreadsheet when data receive from app

Hello everyone, I would like some help please. I have a spreadsheet that receives data from an app. I would like everytime that new data arrives to the spreadsheet to be sort by date automatically (collumn B) from the newest date first to the oldest at last. I have tested some scripts but they work only on edit by me, not the app. Here is one of the scripts I used. Thanks in advance.

function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1")
var range = sheet.getRange("A2:Z450");

// Sorts by the values in column 2 (B)
range.sort({column: 2, ascending: false});

}

If you use google apps script web app to upload your data, then you can include the sort routine in that, so that after the data is posted to the sheet, the sheet gets sorted.

Thanks for the reply. I use this script to get the data, where can I put the code to sort them? Sorry I have not much experiance in this. Thanks!

function doGet(e) {

var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1YPZlUa9lXzAsvfXWHilabwCWN2Bvhhbsr4Jj5s-yb9k/edit?usp=sharing");

var sheet = ss.getSheetByName("BiPolar");

addUser(e,sheet);

}

function doPost(e) {

var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1YPZlUa9lXzAsvfXWHilabjCWN2Bvhhgsr4Jj5s-yb9k/edit?usp=sharing");

var sheet = ss.getSheetByName("Sheet1");

addUser(e,sheet);

}

function addUser(e,sheet) {

var UserID = e.parameter.UserID ;

var Date = e.parameter.Date ;

var Q29 = e.parameter.Q29 ;

var Q30 = e.parameter.Q30 ;

var Q1 = e.parameter.Q1 ;

var Q2 = e.parameter.Q2 ;

var Q3 = e.parameter.Q3 ;

var Q4 = e.parameter.Q4 ;

var Q5 = e.parameter.Q5 ;

var Q6 = e.parameter.Q6 ;

var Q7 = e.parameter.Q7 ;

var Q8 = e.parameter.Q8 ;

var Q9 = e.parameter.Q9 ;

var Q10 = e.parameter.Q10 ;

var Q11 = e.parameter.Q11 ;

var Q12 = e.parameter.Q12 ;

var Q13 = e.parameter.Q13 ;

var Q14 = e.parameter.Q14 ;

var Q15 = e.parameter.Q15 ;

var Q16 = e.parameter.Q16 ;

var Q17 = e.parameter.Q17 ;

var Q18 = e.parameter.Q18 ;

var Q19 = e.parameter.Q19 ;

var Q20 = e.parameter.Q20 ;

var Q21 = e.parameter.Q21 ;

var Q22 = e.parameter.Q22 ;

var Q23 = e.parameter.Q23 ;

var Q24 = e.parameter.Q24 ;

var Q25 = e.parameter.Q25 ;

var Q26 = e.parameter.Q26 ;

var Q27 = e.parameter.Q27 ;

var Q28 = e.parameter.Q28 ;

sheet.appendRow([UserID,Date,Q29,Q30,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18,Q19,Q20,Q21,Q22,Q23,Q24,Q25,Q26,Q27,Q28]);

}

Are you using POST or GET to upload your data ?
(show your relevant blocks)

Here are the blocks..thanks

include this at the end of your addUser script

sheet.appendRow([UserID,Date,Q29,Q30,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q12,Q13,Q14,Q15,Q16,Q17,Q18,Q19,Q20,Q21,Q22,Q23,Q24,Q25,Q26,Q27,Q28]);

var range = sheet.getRange("A2:Z450");

// Sorts by the values in column 2 (B)
range.sort({column: 2, ascending: false});

}

It seems to work just fine! Thank you very much!

I asked about POST, because I thought you might be interested in this, which may help to simplify your script.

You should be able to use (A2:Z) as your range, which would allow for more than 450 entries.

I have removed the Z450 and I use Z, I guess there will be no problem with the script I use. What is your opinion? Thanks!

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.