簡體   English   中英

使用 onChange() 在客戶端觸發/運行 function。 谷歌應用腳本

[英]Trigger/run a function in client side with onChange(). Google App Script

據我所知, google.script.run 可以從客戶端運行 gs 代碼。 那么,是否可以使用 onChange(e) 在客戶端運行/觸發 function?

我在電子表格中創建了一個側邊欄,其中包含一些 html 代碼。 例如我的 html 代碼如下:

<div>
  <p id="apk">Your APK</p>
</div>

然后,每當有人更改/編輯電子表格中的范圍時,它都會自動獲取該值並將我的段落(html)值更改為用戶在該范圍中輸入的任何值。

function changeApk(){
  document.getElementById("apk").innerHtml = getApk;
}

我的gs代碼:

function onChange(e){
  var activeSheet = e.source.getActiveSheet(); 
  var lr = activeSheet.getRange("F11").getDataRegion().getLastRow();
  var getApk = activeSheet.getRange(lr,6).getValue();
  return getApk;
}

如您所見,我試圖獲取 getApk 值並在我的段落標簽中更新它。 我希望它在用戶更改/編輯范圍后自動發生,而無需單擊 html 代碼中的任何按鈕。 現在我被困在這里。 知道怎么做嗎? 提前致謝!

您無法在服務器端觸發器上更改 Apps 腳本項目的客戶端

您可以做的是 web 輪詢 - 通過使用setInterval()調用google.script.run以近距離刷新您的客戶端內容。

樣本:

代碼.gs

function getValue(){
  var sheet = SpreadsheetApp.openById("XXXXXX").getSheetByName("YYY"); 
  var lr = sheet.getRange("F11").getDataRegion().getLastRow();
  var getApk = sheet.getRange(lr,6).getValue();
  return getApk;
}

索引.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <script>
  function polling(){
    setInterval(myFunction,2000);
   }
  function myFunction(){
    var lob = document.getElementById("mySelect").value;
    google.script.run.withSuccessHandler(changeApk).getValue();    

  }
function changeApk(getApk){
  document.getElementById("apk").innerHtml = getApk;
}
  </script>
  <body onload="polling()">
  <div>
    <p id="apk">Your APK</p>
  </div>
  </body>
</html>

根據您的實現,您將額外需要doGet() function 來部署WebApp或為側邊欄創建 HTML output。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM