When getuserdates()
在 Google Apps 脚本方面返回的值["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"]
, userdates
of var userdates = <?= getuserdates(); ?>
is 12/13/2019,12/14/2019,12/16/2019,12/17/2019,12/24/2019
的字符串类型。我认为这样一来,你的脚本就行不通了。
那么,作为几个答案之一,这个答案怎么样?请修改JavaScript.html
.
模式一:
在此模式中,使用了 scriptlet。我以为这个线程 https://stackoverflow.com/q/58810165可能有用。
From:
var userdates = ["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"];
To:
var userdates = [];
<? var data = getuserdates(); ?>
<? for (var i = 0; i < data.length; i++) { ?>
userdates.push(<?= data[i] ?>);
<? } ?>
- 当脚本运行时,
userdates
is ["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"]
.
- 作为使用 scriptlet 的另一种模式,例如,如果您想使用
var userdates = <?= getuserdates(); ?>
,您还可以修改var userdates = <?= getuserdates(); ?>
to var userdates = <?= getuserdates() ?>.split(",");
.
模式2:
在此模式中,使用 google.script.run。
From:
var userdates = ["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"];
To:
google.script.run.withSuccessHandler(userdates => {
$(function() {
$('#datepicker').datepicker({
minDate: "+3W",
maxDate: "+12W",
beforeShowDay: function (date) {
$thisDate = (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
if ($.inArray($thisDate, userdates) == -1) {
return [true, ""];
} else {
return [false, "", "Unavailable"];
}
}
});
});
}).getuserdates();
- 当脚本运行时,
userdates
从...获得getuserdates()
用作["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"]
.
Note:
- 在这种情况下,假设
getuserdates()
回报["12/13/2019", "12/14/2019", "12/16/2019", "12/17/2019", "12/24/2019"]
.
参考:
- HTML 服务:模板化 HTML https://developers.google.com/apps-script/guides/html/templates
- 类 google.script.run https://developers.google.com/apps-script/guides/html/reference/run
如果我误解了你的问题并且这不是你想要的方向,我很抱歉。
Edit 1:
关于问题1:
关于错误的原因Uncaught SyntaxError: Unexpected token '<'
出现这个问题的原因是<?!= include('JavaScript'); ?>
。所以请修改如下。
From:
</div>
<?!= include('JavaScript'); ?>
</body>
To:
</div>
<script>
var userdates = [];
<? var data = getuserdates(); ?>
<? for (var i = 0; i < data.length; i++) { ?>
userdates.push(<?= data[i] ?>);
<? } ?>
</script>
<?!= include('JavaScript'); ?>
</body>
- 在这种情况下,请不要添加
<script>###</script>
to JavaScript
of <?!= include('JavaScript'); ?>
.
- 不幸的是,似乎 scriptlet 不能用于 scriptlet 中。
关于问题2:
关于原因[""12/11/2019"", ""12/15/2019"", ""12/16/2019"", ""12/17/2019"", ""12/24/2019""]
返回自getuserdates()
,这个问题的原因是userdates.push('"' + datasheetData[i][5]+ '"');
。所以请修改如下。
From:
userdates.push('"' + datasheetData[i][5]+ '"');
To:
userdates.push(datasheetData[i][5]);
Edit 2:
当使用模式1时,脚本如下。关于getuserdates()
GAS侧,请修改自userdates.push('"' + datasheetData[i][5]+ '"');
to userdates.push(datasheetData[i][5]);
。请按如下方式修改 HTML 和 Javascript 端。
HTML 和 JavaScript:Page.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/themes/cupertino/jquery-ui.css">
<?!= include('Stylesheet'); ?>
</head>
<body>
<div class="demo" >
<h1>jQuery datepicker</h1>
<p>click here : <input type="text" name="date" id="datepicker" /></p>
</div>
<script>
var userdates = [];
<? var data = getuserdates(); ?>
<? for (var i = 0; i < data.length; i++) { ?>
userdates.push(<?= data[i] ?>);
<? } ?>
</script>
<?!= include('JavaScript'); ?>
</body>
</html>
HTML 和 JavaScript:JavaScript.html
<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>
<script>
$(function() {
$('#datepicker').datepicker({
minDate: "+3W",
maxDate: "+12W",
beforeShowDay: function (date) {
$thisDate = (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
if ($.inArray($thisDate, userdates) == -1) {
return [true, ""];
} else {
return [false, "", "Unavailable"];
}
}
});
});
</script>