返回2个值



我试图在GAS中返回两个值,像这样:

Html

<script>
function phoneSearch() {
var phone = document.getElementById("phone").value;
google.script.run.withSuccessHandler(onSuccess).phoneSearch(phone);
}
function onSuccess(name, email) {
document.getElementById('nameDiv').innerHTML = "<div>" + name + "</div>";
document.getElementById('emailDiv').innerHTML = "<div>" + email+ "</div>";
} 
</script>

服务器JS

function phoneSearch(phone){
try {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("sheetNameHere");
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][4] == phone) {
var name = inputData[i][3];
var email = inputData[i][5];
return name;
return email;
}
}
} catch(e) {
alert(e)
}
}

只返回第一个值(name)。提前感谢!

你不能在同一级别使用多个'return',你应该返回一个包含你的两个值的对象

return {
phone: phone,
email: email
}

一次只能从函数中返回一个值,但是您可以很容易地将其包装在对象中:

<script>
function phoneSearch() {
var phone = document.getElementById("phone").value;
google.script.run.withSuccessHandler(onSuccess).phoneSearch(phone);
}
function onSuccess(result) {
//                  ^ phoneSearch now returns -one- object, containing `name` and `email`.
document.getElementById('nameDiv').innerHTML = "<div>" + result.name + "</div>";
document.getElementById('emailDiv').innerHTML = "<div>" + result.email+ "</div>";
} 
</script>

JS

function phoneSearch(phone){
try {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("sheetNameHere");
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (data[i][4] == phone) {
var name = inputData[i][3];
var email = inputData[i][5];
// Return both values at once. 
return { name, email };
// (This is shorthand for: `return { name: name, email: email };`)
}
}
} catch(e) {
alert(e)
}
}

最新更新