[英]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.