簡體   English   中英

運行添加谷歌表單條目的函數后,谷歌腳本中的 getValue() 返回 false

[英]getValue() in google script returns false after running function that adds a google form entry

我在 google 表格中創建了一個表單,在單擊“發送”按鈕后,它會創建一個 google 表單條目(通過加載 url),其中包含在表格中輸入的數據。 該腳本如下所示:

function registerTest() {
  var ws_MAIN = SpreadsheetApp.getActiveSheet();
  var url = ws_MAIN.getRange("U1").getValue();
  if(url=="") return SpreadsheetApp.getUi().alert("ERROR: Incomplete data");
  var html = HtmlService.createHtmlOutput('<html><script>'
  +'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
  +'var a = document.createElement("a"); a.href="'+url+'"; a.target="_blank";'
  +'if(document.createEvent){'
  +'  var event=document.createEvent("MouseEvents");'
  +'  if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'                          
  +'  event.initEvent("click",true,true); a.dispatchEvent(event);'
  +'}else{ a.click() }'
  +'close();'
  +'</script>'
  // Offer URL as clickable link in case above code fails.
  +'<body style="word-break:break-word;font-family:sans-serif;">Unable to register automatically. <a href="'+url+'" target="_blank" onclick="window.close()">Please clic here</a>.</body>'
  +'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
  +'</html>')
  .setWidth(90).setHeight(1);
  SpreadsheetApp.getUi().showModalDialog(html,"Registering..." );
  
  var n,check;
  for(n=0;n<5;n++){
    check = ws_MAIN.getRange("O31").getValue(); //to check if form entry was created
    if(check==true){
      deleteData();
      return;
    }
    Utilities.sleep(500);
  }
}

在單元格“O31”上,我有一個簡單的函數“=ISNUMBER(MATCH(B4,FormResponses!D:D,0))”,如果找到表單ID,它就會顯示為真。 因此,在函數的第一部分運行后,var check 應該返回 true(正如我在工作表上的屏幕上看到它更改為 TRUE),我嘗試使用 Utilities.sleep 和 crating 循環來檢查值是否更改讀了幾遍后,但它不起作用,我不知道為什么。 如果有人能幫助我理解我做錯了什么,我將不勝感激,我對編碼比較陌生。 謝謝你。

我會嘗試以這種方式更改代碼的最后一部分:

SpreadsheetApp.flush();
var check = ws_MAIN.getRange("O31").getValue(); //to check if form entry was created
if (check == true) deleteData();
return;

暫無
暫無

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

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