我试图在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)
}
}