自动更新Google Apps脚本网络应用

时间:2016-10-31 14:14:05

标签: javascript google-apps-script

我有一个Google网络应用程序,显示一个HTML仪表板,其中的数据通过AJAX提取。使用Google表格填充电子表格,我希望每10秒左右更新一次数据(模拟选举结果),因为教师可以看到实时结果。

以下是该应用的相关部分:

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或类似的?

1 个答案:

答案 0 :(得分:0)

似乎这一行是从电子表格中获取数据:

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

您可以尝试在setInterval中包装此行,以便每十秒调用一次:

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

也可能有针对setInterval的Google Apps脚本。