Html Form Does Not Submit To Spreadsheet Using Dopost
tried to find some useful answer in existing threads but nothing is really matching my issue. I guess there is a quick fix to it, i just cannot see it. I have a HTML form and want
Solution 1:
If you are going to use google.script.run
, then it's pointless to have a function named doPost()
. And it's also pointless to have a submit type input tag: type="submit"
If you want to run a withSuccessHandler(fileUploaded)
to change the display, you can't have a button inside of the form. It will cause the display to go blank.
And you don't need two google.script.run
calls. You need multiple changes and improvements:
form.html
<formid="myForm"><inputtype="text"name="myName"placeholder="Your name.."><inputtype="file"name="myFile"></form><inputtype="button"value="Upload File"onclick="this.value='Uploading..';
var theForm = document.getElementById('myForm');
google.script.run.withSuccessHandler(fileUploaded)
.processFormData(theForm);"><divid="output"></div><script>functionfileUploaded(status) {
document.getElementById('myForm').style.display = 'none';
document.getElementById('output').innerHTML = status;
}
</script><style>input { display:block; margin: 20px; }
</style>
server.gs
function processFormData(form) {
uploadFiles(form.myFile);//Call first function to process the filevarinnerArray= [];
varouterArray= [];
innerArray.push(form.myName);
innerArray.push(form.myFile);
outerArray.push(innerArray);//Call second function to write data to SS
writeDataToSS(outerArray);
};
function uploadFiles(theFile) {
try {
vardropbox="Customer Shapes";
var folder, folders = DriveApp.getFoldersByName(dropbox);
if (folders.hasNext()) {
folder = folders.next();
} else {
folder = DriveApp.createFolder(dropbox);
}
varblob= theFile;
varfile= folder.createFile(blob);
file.setDescription("Uploaded by " + theFile);
return"File uploaded successfully " + file.getUrl();
} catch (error) {
return error.toString();
}
}
function writeDataToSS(values) {
//html.setSandboxMode(HtmlService.SandboxMode.EMULATED);var url="url...";
varmessage='Ram';
varsubmitSSKey='...kHI';
varsheet= SpreadsheetApp.openById(submitSSKey).getActiveSheet();
varlastRow= sheet.getLastRow();
vartargetRange= sheet.getRange(lastRow+1, 1, 1, 2).setValues(values);
}
The html file is not a template, it does not have a scriptlet in it. Just use createHtmlOutputFromFile()
:
functiondoGet(e) {
var html = HtmlService.createHtmlOutputFromFile("form");
html.setSandboxMode(HtmlService.SandboxMode.IFRAME);
return html;
}
Post a Comment for "Html Form Does Not Submit To Spreadsheet Using Dopost"