填充帶有數據選擇框我有一個谷歌的網站,我目前使用下面的腳本來填充我的選擇框從谷歌片是作爲我的數據庫中的數據:從谷歌表
<? 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放進去,如果這個變量是!=未定義的,那麼它只會解析它,那也行不通。任何建議,將不勝感激。