I have a script that uses a html popup window to get user input and pass the data to my main script after the user enters data and click the 'submit' button. I want the window to close after the user clicks submit so I added a google.script.host.close() in my code but when I add that line the script doesn't always run. The script works fine when I remove the close().
I'm quite new to javascript / google script so I suspect I did something wrong. I tried adding a sleep function before the close() but it doesn't seem to do anything.
Is there something wrong in my code? I need some help.
Here's my HTML file:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<form class="form-inline">
<p>Entrez le # de ligne des formulaires à créer.</p>
<label for="debut">Première ligne :</label>
<input type="number" id="debut" name="debut" min="2"/><br/><br / >
<label for="fin">Dernière ligne :</label>
<input type="number" id="fin" name="fin"/><br/><br / >
<input type="submit" id="soumettre" value="Soumettre" onclick="getInput()"/>
<input type="button" id="annuler" value="Annuler" onclick="google.script.host.close()" />
</form>
</html>
<script>
function getInput(){
var valueDebut = document.getElementById("debut").value;
var valueFin = document.getElementById("fin").value;
google.script.run.main(valueDebut, valueFin);
google.script.run.sleep();
google.script.host.close();
}
</script>
Here are parts of my google script code:
/**** UI ****/
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu('Formulaires')
.addItem('Créer des formulaires', 'showDialog')
.addItem('Synchroniser les formulaires', 'checkAttente')
.addToUi();
}
function showDialog() {
var html = HtmlService.createHtmlOutputFromFile('Dialog')
.setWidth(315)
.setHeight(185);
SpreadsheetApp.getUi()
.showModalDialog(html, 'Création de formulaire');
}
/**** MAIN ****/
function main(valueDebut, valueFin) {
var minRow = valueDebut;
var maxRow = valueFin;
var ss = SpreadsheetApp.openById('xxx');
var sheet = ss.getSheetByName('xxx');
for (var i = minRow; i <= maxRow; i++){
var currentRow = i;
var data = getData(sheet, currentRow);
if (data[6] == "" && data[7] != 0) {
var update = createForm(data[0],data[1],data[2],data[3],data[4],data[5],nomFolder);
sheet.getRange(currentRow, colLienEdit).setValue(update[0]);
sheet.getRange(currentRow, colLienPartage).setValue(update[1]);
sheet.getRange(currentRow, colId).setValue(update[2]);
sheet.getRange(currentRow, colStatut).setValue(update[3]);
}
}
}
function sleep(){
Utilities.sleep(1000);
}