填充带有数据选择框我有一个谷歌的网站,我目前使用下面的脚本来填充我的选择框从谷歌片是作为我的数据库中的数据:从谷歌表
<? var stringified = getData(); ?>
<?var data = JSON.parse(stringified)?>
<select size="10" id="userChoice">
<? for (var i = 0; i < data.length; i++) { ?>
<option>
<?= data[i] ?>
<? } ?>
</select>
这使用填充数据库中每个条目的选择框加载页面。我想知道这是否是最好的方法。我真正想要做的是让选择框的内容更具动态性。
我写了一个脚本来过滤(通过日期)谷歌表的内容,但我无法弄清楚如何让这些过滤结果显示在上面的选择框中。我尝试了几种可能的解决方案,但不断跟他们打路障。下面是将客户端传递给服务器端的函数(注意我在下面的脚本中没有意识到将数据传递回选择框,这只是为了说明我是如何过滤数据的):
//Takes the dates that were entered into the first two date pickers and sends them over to the server side stringified. The server side then uses these dates to filter out jobs not within the given time period.
function dateFilter(){
var date = {};
//dates pusehd into array
date[0] = document.getElementById("startDate").value;
date[1] = document.getElementById("endDate").value;
//array stringified
var dates = JSON.stringify(date);//Convert object to string
google.script.run
.getData2(dates);
那么这里就是通过在服务器端数据库过滤代码:
function getData2(dates) {
var ss = SpreadsheetApp.openById('1emoXWjdvVmudPVb-ZvFbvnP-np_hPExvQdY-2tOcgi4').getSheetByName("Sheet1");
var date = JSON.parse(dates);
var dateArray = [];
for (var k in date) {//Loop through every property in the object
var thisValue = date[k];//
dateArray.push(thisValue);
};
var startDate = Date.parse(dateArray[0]);
var endDate = Date.parse(dateArray[1]);
var jobReference = [];
var job;
var dateCell1;
var dateCell;
if ((startDate==NaN) || (endDate==NaN)){
for (var i = 2; job!=""; i++){
job = ss.getRange(i,43).getValue();
jobReference.push(job);
};
}
else{
for (var i = 2; job!=""; i++){
dateCell1 = ss.getRange(i,3).getValue();
dateCell = Date.parse(dateCell1);
if (startDate<=dateCell&&endDate>=dateCell){
job = ss.getRange(i,43).getValue();
jobReference.push(job);
Logger.log("here it is"+jobReference);
}
else{
}
}
};
var jR = JSON.stringify(jobReference);
return jR;
}
现在,我已经试过几件事情,有一个成功处理程序更改线路<? var stringified = getData();?>
使用getData2没有按” t似乎工作(它喊我,我试图解析的变量是未定义在服务器端)。所以我试着把一个if/else放进去,如果这个变量是!=未定义的,那么它只会解析它,那也行不通。任何建议,将不胜感激。