2016-10-31 6 views
0

У меня есть веб-приложение 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 или аналогичный?

ответ

0

Похоже, эта линия получает данные из таблицы:

google.script.run.withSuccessHandler(popularVote).getData(); 

Вы можете попробовать обертывание эту строку в setInterval, так что она называется каждые десять секунд:

setInterval(function(){ 
google.script.run.withSuccessHandler(popularVote).getData(); 
}, 10000); 

Там также может быть эквивалентом скрипта Google Apps для setInterval.

+0

'setTimeout' запускал его один раз через 10 секунд, но это привело меня к' setInterval', который отлично работает. Благодарю. – Brian

+0

Ха-ха, дух с моей стороны. Я обновил ответ, чтобы вместо этого использовать setInterval. –

Смежные вопросы