我找到了解决此问题的正确方法。基本上我需要重新排序我调用不同函数的方式以及我从哪里开始我的代码。也许这个问题应该被删除,或者这可能会有用,我不知道。
我从我的入口点调用showDialog():runthis(),因此runthis() 中的后续代码正在执行,这是不受欢迎的。
相反,我将脚本的入口点更改为 showDialog(),然后我可以从那里将用户输入的数据传递给 runthis()
真是愚蠢的错误,但希望这对不熟悉HtmlService的其他人有所帮助
编辑:
我先调用日期选择器:
function showDialog(){
var html = HtmlService.createHtmlOutputFromFile('DateDialog')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
SpreadsheetApp.getUi()
.showModalDialog(html, 'Pick a date')
}
然后在单独的 html 文件中调用模态对话框:
<div class="demo" >
<style type="text/css"> .demo { margin: 30px ; color : #AAA ; font-family : arial sans-serif ;font-size : 10pt }
p { color : red ; font-size : 11pt }
</style>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/themes/cupertino/jquery- ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> </script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script>
<p>Please select a date below :</p>
<p> Start Date : <input type="text" name="StartDate" id="startdatepicker" /> </p>
<p> End Date : <input type="text" name="EndDate" id="enddatepicker" /> </p>
<script>
$( "#startdatepicker" ).datepicker({
showWeek: true,
firstDay: 0,
});
</script>
<script>
$( "#enddatepicker" ).datepicker({
showWeek: true,
firstDay: 0,
});
</script>
<input type="button" value="Create" onclick="submitDates()" />
<input type="button" value="Close" onclick="google.script.host.close()" />
<script>
// Pass input dates to server-side submitDates()
function submitDates() {
var startDate = $("#startdatepicker").val();
var endDate = $("#enddatepicker").val();
google.script.run
.withSuccessHandler(
// Dates delivered, close dialog
function() {
google.script.host.close();
})
// Display failure messages
.withFailureHandler(
function() {
var div = $('<div id="error" class="error">' + msg + '</div>');
$(element).after($("#demo"));
})
.submitDates(startDate,endDate);
}
</script>
</div>
它将日期传递给服务器端函数,然后将数据发送到其他几个函数,在本例中只有一个,Timesheet(而不是runthis())
function submitDates(startDate,endDate) {
Timesheet(startDate,endDate);
}
可能有很多需要清理和简化,但还没有时间这样做,很高兴它正在工作!