I know how to write a simple app script that (once published) provide a simple form (name and message) that push values in a Google Spreadsheet.
My question is: how can I run the script from my site? Can I build an html form and when I submit the form writes in a spreadsheet?
Is there a way to "create" a link with values that must be pushed in the spreadsheet?
Where can I find examples?
Thanks
EDIT
GS CODE
var logSheetId = "[SHEETID]"; // Drive ID of log spreadsheet
function doGet(e){
var nome;
var messaggio;
nome = e.parameter.stringaNome;
messaggio=e.parameter.stringaMessaggio;
scriviSpreadsheet(nome,messaggio);
}
function scriviSpreadsheet(nome, messaggio) {
try {
// Open the log and record the new file name, URL and name from form
var ss = SpreadsheetApp.openById(logSheetId);
var sheet = ss.getSheets()[0];
sheet.appendRow([nome, messaggio]);
// Return the new file Drive URL so it can be put in the web app output
//return file.getUrl();
} catch (error) {
return error.toString();
}
}
HTML (external site)
<form id="myForm">
<input type="text" id="nome" name="nome" placeholder="Il tuo nome"/>
<input type="text" id="messaggio" name="messaggio"/>
<input type="button" value="Submit"
onclick="scrivi()" />
</form>
<script>
function scrivi(){
var nome= document.getElementById("nome").value;
var messaggio = document.getElementById("messaggio").value;
var location = "https://script.google.com/macros/s/[MYSCRIPTID]/exec?stringaNome=" + nome + "&stringaMessaggio=" + messaggio;
window.location = location;
}
function onFailure(error) {
alert(error.message);
}
</script>
I know it's not the best code ever but it works.
How can I avoid that any page open when I click the button?
To add an HTML file to your Apps Script project, follow these steps: Open the Apps Script editor. At the left, click Add a file add > HTML.
Navigate to the page in your Site where you want to embed the web app. Click the edit icon, and then Insert > Google Apps Script. Choose the script from the list that represents your web app. If your web app is not bound to this Site, you can paste in the web app URL instead.
To run a function from the script editor, at the top, select the name of the function you want to execute and click Run.
EDIT: Tested and works. Don't forget to deploy as web app, give the form access to post to the script, and ensure the script has access to the target sheet by running the script manually once.
form.html:
<form action="https://script.google.com/macros/s/[SCRIPT ID]/exec" method="post">
Input One:<br>
<input type="text" name="inputOne"><br>
Input Two:<br>
<input type="text" name="inputTwo"><br>
Input Three:<br>
<input type="text" name="inputThree"><br>
Input Four:<br>
<input type="text" name="inputFour"><br>
Input Five:<br>
<input type="text" name="inputFive"><br>
<input type="submit" value="Submit">
</form>
Code.gs:
function doPost(e) {
var ss = SpreadsheetApp.openById("SHEET ID");
var sheet = ss.getSheetByName("Sheet1");
var sheet_counters = ss.getSheetByName("Counters");
var id = sheet_counters.getRange("A2").getValue()+1;
var timeZone = ss.getSpreadsheetTimeZone();
var timestamp = Utilities.formatDate(new Date(), timeZone, "dd/MM/yyyy HH:mm:ss");
sheet.appendRow([
id,
timestamp,
e.parameter.inputOne,
e.parameter.inputTwo,
e.parameter.inputThree,
e.parameter.inputFour,
e.parameter.inputFive]);
sheet_counters.getRange("A2").setValue(id);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With