Frage

I am using html service in my appscript app.

In my sample.gs file i make connection to jdbc and fetching values from my cloud sql DB.

code is like this in my sample.gs

function doGet(){
return HtmlService.createTemplateFromFile('datatable').evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function getSql(){  
  var conn = Jdbc.getCloudSqlConnection('here i write my sql url');
  var stmt = conn.createStatement();
  var results = stmt.executeQuery("select name, location, address, phone, fax from  person");
  Logger.log(results);
  return results;
}

Loggers logs jdbcResultSet. So the query works fine.

in my datatable.html file i make a call to gs file and fetching values from table. It works fine. But only the return type value im getting as null in my html file. my datable.html code is like t his

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type='text/javascript'>
    $(function(){
        var runner = google.script.run.withFailureHandler(onFailure);
        runner.withSuccessHandler(onSuccess).getSql();       
});
function onSuccess(data){
  alert(data);       
}
function onFailure(data){
  alert(data);
}

It enters success function. But alerts null. Please help me how to get the result value.

War es hilfreich?

Lösung

You need to retrieve the results on the server side (gs code), put them in an array for example and return to client side. Check this example

Code.gs

function doGet(){
return HtmlService.createTemplateFromFile('datatable').evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

function getSql(){  
  var conn = Jdbc.getConnection('jdbc:mysql://sql4.freesqldatabase.com:3306/sql427377', 'sql427377', '');
  var stmt = conn.createStatement();
  var results = stmt.executeQuery("select name, location, address, phone, fax from  person");
  Logger.log(results);
  var resultsArray = [];
  while(results.next()) {
    resultsArray.push({'name': results.getString(1),
                  'location' : results.getString(2),
                  'address' : results.getString(3),
                  'phone' : results.getString(4),
                  'fax' : results.getString(5)});
  }
  return JSON.stringify(resultsArray);
}

datatable

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script type='text/javascript'>
    $(function(){
        var runner = google.script.run.withFailureHandler(onFailure);
        runner.withSuccessHandler(onSuccess).getSql();       
});
function onSuccess(data){
var data = JSON.parse(data);
  for(var x in data) {
     $("#myTable").append("<tr><td>"+data[x].name+"</td><td>"+data[x].location+"</td>   <td>"+data[x].address+"</td><td>"+data[x].phone+"</td><td>"+data[x].fax+"</td></tr>");
  }
}
function onFailure(data){
  alert(data);
}
</script>

<table id="myTable"></table>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top