Yes, he does.
This Block will allow you to use a user name by adding a new item to the list. The Dummy Name is UserName. You can change the name for each user of your app using Blocks to Samuel, Steve etc. if you set a variable in a modified version of this code to allow the user to use a TextBlock to set the appropriate UserName.
When I use this script in your Spreadsheet,
//This script is bound to the spreadsheet. It therefore uses getActive() to get the
//spreadsheet it is bound to, and getSheets()[0] to get the first sheet in the spreadsheet
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheets()[0];
//POST function appends all data sent as parameters to the next row on the sheet, in the order sent
function doPost(e) {
var data = JSON.parse(e.postData.contents);
sh.appendRow(data);
return ContentService.createTextOutput(data);
}
//GET function returns sheet values as a stringified JSON
//Using getDisplayValues() returns all values as strings
//This is not an issue in AI2 as number=string=number
//Use getValues() if you want original value formats
function doGet(e) {
var data = JSON.stringify(sh.getDataRange().getDisplayValues());
return ContentService.createTextOutput(data);
}
you should see something like:
in your spreadsheet.
Hope this helps. Sorry, I cannot debug YOUR code; Taifun might help. You are doing a lot of things that are not possible with what code is used in the tutorial.
Also note, the code will not work on your device if it is Android 10+unless you set the Location permission manually using the system Settings for your device probably for Android 10+ . The tutorial mentioned it works on Android 8.1 and it does without asking for permissions.