正如標題所說,我想知道當用戶在對話框上按下回車鍵時回傳什么資料型別,特別是從谷歌電子表格中的自創對話框中,因為我的印象是它會是一個陣列。更具體地說,我有一個允許文本用戶輸入的對話框。然后應該將此輸入從對話框保存到谷歌電子表格中的單元格。目前它只顯示undefined Vessels每個單元格。下面是相關代碼:
function setVesselCounts(data){
let keys = scs.getRange(6,1,12,1).getDisplayValues()
for(var i = 0; i < keys.length; i ){
scs.getRange(6,3,6 i).setValue(data[i] " Vessels")
}
}
下面是用來創建對話框的html,以及html里面的js
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<style>
p {display: table-row; }
label { display: table-cell; }
input { display: table-cell; }
</style>
<script>
function setVesselCounts(){
let controls = {}
document.querySelectorAll("input[type=text]").forEach(input => controls[input.id] = input.value)
validateInput(controls) ? google.script.run.withSuccessHandler(google.script.host.close).setVesselCounts(controls) : window.alert('Please Check Input')
}
function validateInput(controls){
return (
controls["LA/LB"].value != '' &&
controls["Oakland"].value != '' &&
controls["Tacoma"].value != '' &&
controls["Seattle"].value != '' &&
controls["Vancouver"].value != ''&&
controls["Halifax"].value != '' &&
controls["NY"].value != '' &&
controls["Norfolk"].value != '' &&
controls["Charleston"].value != '' &&
controls["Savannah"].value != '' &&
controls["Mobile"].value != '' &&
controls["Houston"].value != ''
)
}
</script>
</head>
<body>
<div>
<table >
<p>
<label for="LA/LB">LA/LB: </label><input type="text" id="LA/LB" />
</p>
<p>
<label for="Oakland">Oakland: </label><input type="text" id="Oakland">
</p>
<p>
<label for="Tacoma">Tacoma: </label><input type="text" id="Tacoma">
</p>
<p>
<label for="Seattle">Seattle: </label><input type="text" id="Seattle">
</p>
<p>
<label for="Vancouver">Vancouver: </label><input type="text" id="Vancouver">
</p>
<p>
<label for="Halifax">Halifax: </label><input type="text" id="Halifax">
</p>
<p>
<label for="New York">New York: </label><input type="text" id="NY">
</p>
<p>
<label for="Norfolk">Norfolk: </label><input type="text" id="Norfolk">
</p>
<p>
<label for="Charleston">Charleston: </label><input type="text" id="Charleston">
</p>
<p>
<label for="Savannah">Savannah: </label><input type="text" id="Savannah">
</p>
<p>
<label for="Mobile">Mobile: </label><input type="text" id="Mobile">
</p>
<p>
<label for="Houston">Houston: </label><input type="text" id="Houston">
</p>
</table>
<input type="button" value="Submit" onclick="setVesselCounts()" >
<input type="button" value="Close" onclick="google.script.host.close()" />
</div>
</body>
</html>
最后是創建的對話框的截圖
uj5u.com熱心網友回復:
由于您的值是連續的,因此請捕獲陣列中的值并僅使用一個setValues()而不是重復setValue()。請注意,我正在構建一個二維陣列rows。
改變
function setVesselCounts(data){
let keys = scs.getRange(6,1,12,1).getDisplayValues()
for(var i = 0; i < keys.length; i ){
scs.getRange(6,3,6 i).setValue(data[i] " Vessels")
}
}
至
function setVesselCounts(data){
let keys = scs.getRange(6,1,12,1).getDisplayValues();
let rows = [];
for(var i = 0; i < keys.length; i ){
rows.push([data[keys[i][0]] " Vessels"]);
}
scs.getRange(6,3,12,1).setValues(rows);
}
參考
- 電子表格最佳實踐
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522971.html
