2016-10-31 14 views
0

Google Webアプリには、AJAX経由でデータが取り込まれたHTMLダッシュボードが表示されています。スプレッドシートはGoogleフォームを使用して作成されたもので、10秒ごとにデータ(模擬選挙結果)を更新して、教師が実際の結果を見ることができるように投票が行われるようにしたいと思います。Google Apps Script 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(); 

それは10秒ごとに呼び出されるようにあなたがたsetIntervalで、この行をラップ試みることができる。また、

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

ありsetIntervalに相当するGoogle Appsスクリプトである可能性があります。

+0

'setTimeout'は10秒後に1回実行しましたが、それは私を' setInterval'に導きました。これは素晴らしい動作です。ありがとう。 – Brian

+0

母、こんにちは。代わりにsetIntervalを使用するように答えを更新しました。 –

関連する問題