如何在谷歌应用程序脚本中返回对象

时间:2017-03-02 11:13:24

标签: javascript google-apps-script google-sheets

我想将对象从code.gs返回到google app脚本上的html文件。但我无法回报价值观。我想在html界面上显示值。我无法在“alert(retsearch [0] .yourname);”中返回值。“ 请帮忙,谢谢!!

Code.gs

function getData() {
  var ss=SpreadsheetApp.openById('1PWJyASHmjJ_W8-72u8bbrGbN-Nv6kdkCvjdmYuNNlEY');
  var sheet=ss.getSheetByName('invoice1');
  return sheet;
}

function processSearch(searchform){
 var sheet = getData();
 var data = ObjApp.rangeToObjects(sheet.getDataRange().getValues());
 var searchfname=searchform.surname;
 var searchcname=searchform.scustomername;
 var searchpayementdate=searchform.spayementdate;
 var results = [];
 for(var i=0 ; i < data.length ; i++) {
    if(searchfname == data[i].yourname || searchcname == data[i].customername || searchpayementdate == data[i].paymentday   ) {
      var events ={yourname:data[i].yourname, customername:data[i].customername,paymentday:data[i].paymentday };
      results.push(events);   
    }
  }
   Logger.log(results); 
   return results;
}

Html文件

<form id="fsrecord">
<input type="text" name="surname" id="surname" placeholder="by your name"/> <br/>
<input type="text" name="scustomername" id="scustomername"  placeholder="by customer name"/> <br/>
<input type="date" name="spayementdate" id="spayementdate"  placeholder="by payment date"> <br>
<input type="submit" value="search" />
</form>

<script>
$( document ).ready(function() { 
 $("#fsrecord").submit(function() {
  google.script.run.withSuccessHandler(function(retsearch){ 
   alert(retsearch[0].yourname);
  }).processSearch(this);

 });

});

</script>

1 个答案:

答案 0 :(得分:2)

您可以在服务器端转换字符串化数据并在客户端解析JSON。

<强> code.js

function processSearch(searchform){
   ...
   ...
   return JSON.stringify(results);
}

<强>的index.html

$(document).ready(function () {
    $("#fsrecord").submit(function () {
        google.script.run.withSuccessHandler(function (retsearch) {
            var response = JSON.parse(retsearch);
            alert(response[0].yourname);
        }).processSearch(this);
    });
});