У меня есть веб-приложение Google, отображающее панель инструментов HTML с данными, вытащенными через AJAX. Электронная таблица заполняется с помощью формы Google, и я хотел бы, чтобы данные (макетные результаты выборов) обновлялись каждые 10 секунд или около того, когда голоса поступали, поэтому учителя могут видеть результаты в реальном времени.Автоматическое обновление скрипта Google Apps webapp
Вот соответствующая часть приложения:
code.gs
function getData() {
var sheet = ss.getSheets()[3];
var data = sheet.getDataRange().getValues();
Logger.log(data);
return JSON.stringify(data);
}
function doGet() {
return HtmlService
.createTemplateFromFile("index")
.evaluate();
}
HTML шаблон
function popularVote(data) {
var getDivs = document.getElementsByClassName("percent");
var data = JSON.parse(data);
for(var j=0;j<getDivs.length;j++) {
getDivs[j].textContent = ((data[j][1]/data[j][2]) * 100).toFixed(1) + "%";
}
}
google.script.run.withSuccessHandler(popularVote).getData();
<div class="card" id="popular">
<div class="cand" id="cand1">
<h2>Candidate:</h2><span class="percent">Loading...</span>
</div>
<div class="cand" id="cand2">
<h2>Candidate:</h2><span class="percent">Loading...</span>
</div>
<div class="cand" id="cand3">
<h2>Candidate:</h2><span class="percent">Loading...</span>
</div>
</div>
То, что я не могу понять это то, что на самом деле извлекает данные. Является ли обработчик успеха опросом сервера? Или это клиентский сценарий? Где я должен включить Utilities.sleep
или аналогичный?
'setTimeout' запускал его один раз через 10 секунд, но это привело меня к' setInterval', который отлично работает. Благодарю. – Brian
Ха-ха, дух с моей стороны. Я обновил ответ, чтобы вместо этого использовать setInterval. –