ステータスをJavaScript関数でHTMLに表示し続ける方法

Nov 30 2020

これは、私がこのフォーラムで行った以前の質問の続きです。

else条件を追加して、コードにいくつかの変更を加えました。私が解決しようとしているのは、ページが読み込まれるときに現在のステータスを表示することです。現在のコードは、ボタンがクリックされた場合にのみステータスを表示します。

ページが読み込まれるときに現在のステータスが表示され、ボタンがクリックされるとステータスが更新されるようにするにはどうすればよいですか。

CODE.GS

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('Index');
}

function checkStatus(notify) { 
  var employee = "John Peter";
  var ss = SpreadsheetApp.getActiveSpreadsheet();        
  var mainSheet = ss.getSheetByName("MAIN");
  var data = mainSheet.getDataRange().getValues();
  
  for (var j = 0; j < data.length; j++){
    var row = data[j];
    var mainSheet2 = row[4];
    var mainSheet3 = row[0];
    var status = (mainSheet2 =="IN" && mainSheet3 == employee) ; 
    if (status == true){
      var notify = employee +" You Are In"
      return notify;
      }
    else{
     var status = (mainSheet2 =="OUT" && mainSheet3 == employee) ; 
    if (status == true){
      var notify2 = employee +" You Are Out"
      return notify2;
  }
}
  }
}

Index.html

<body>
    <div>
      <button onclick="onStatus()">Check Status</button>
      <font color='Green' id="status" onbeforeprint="onStatus" ></font>
      </div>
      
    

    <script>
      function onStatus() {
        google.script.run.withSuccessHandler(updateStatus) // Send the backend result to updateStatus()
          .checkStatus(); // Call the backend function
      }

      function updateStatus(notify) {
        document.getElementById('status').innerHTML= notify;
      }
      
     
      
    </script>
  </body>

回答

2 VimalPatel Nov 30 2020 at 15:43

この関数は、以下のようにページの読み込み時に呼び出すことができます。このスクリプトは、bodyタグが終了する直前の最後に追加します。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
    // The code in this function runs when the page is loaded.
    $(function() {
     google.script.run.withSuccessHandler(updateStatus)
              .checkStatus(); 
    });
</script>