使用scriptDB中的结果添加到HTML中

Using results from scriptDB to add to HTML

本文关键字:HTML 添加 scriptDB 使用 结果      更新时间:2023-09-26

如何为scriptDB中的每个项添加新的div标记?

当我进入"while(results.hasNext())"部分时,代码似乎被卡住了,可能是因为我在HTML的脚本部分使用了Apps Script语法。当我用一个简单的div.innerHTML…等行替换整个while循环时,我能够使脚本工作

index.html文件如下所示:

<form id="myForm">
    <p>Name of Alert: <input name="alertName" type="text" /></p>
    <select name="frequency">
    <option value="everyDay">Every day</option>
    <option value="everyWeek">Every week</option>
    </select>
    <input type="button" value="Submit"
        onclick="google.script.run
        .withSuccessHandler(updateAlertList)
        .processForm(this.parentNode)" />
</form>
<script>
function updateAlertList(results) {
var div = document.getElementById('output');
    while (results.hasNext()) {
        var result = results.next();
        div.innerHTML = '<a href="http://www.google.com">' + result.alertName + '</a>';
    }
}
</script>

Code.gs文件中包含以下内容:

function processForm(formObject) {
    var formAlertName = formObject.alertName;
    var formFrequency = formObject.frequency;
    var db = ScriptDb.getMyDb();
    var alert = {
    alertName: formAlertName,
    frequency: formFrequency
    };
    var record = db.save(alert);
    var results = db.query({});
    return results;
}

更新:当我将此添加到code.gs 时工作

var arrayResults = [];
while (results.hasNext()) {
    arrayResults.push(results.next()); 
}
return arrayResults;

并将其转换为index.html

for (var i=0;i<results.length;i++)
{ 
alert(results[i].alertName);
div.innerHTML = '<a href="http://www.google.com">' + results[i].alertName + '</a>';
}

您需要处理gs中的结果(迭代器),并创建一个结果数组以在javascript中处理。