GAS:调试HTMLService

时间:2015-01-15 22:57:24

标签: google-apps-script google-api google-spreadsheet-api

我正在尝试使用HTMLService来管理简单表单。这是一个原型HTML表单(NATIVE选项是为了便携性):

form.gs

function htmlTest (){
  var html = HtmlService.createHtmlOutputFromFile('form');  
  html.setSandboxMode(HtmlService.SandboxMode.NATIVE);
  SpreadsheetApp.getUi().showModalDialog(html, "Sample Form");
}

function cBack (el1, el2){
  Browser.msgBox('Data sent');
  Logger.log(el1);
  Logger.log(el2);
}

form.html

Enter field 1: <input name="name1"  id='input1'>
<br>
Enter field 2: <input name="name2" id='input2'>
<br>
<input type='button' value='Submit' onclick='fParser()'>

<script>

function fParser() { 
   var el1=document.getElementById('input1').value;
   console.log(el1);
   var el2=document.getElementById('input2').value;
   console.log(el2);
   google.script.run.cBack(el1, el2);
   google.script.host.close();
}
</script>    

如何有效地调试从提供的HTML触发的回调?
回调无法启动时该怎么办? 我看到有时只是关闭并重新打开文档来解决问题:是否有更有效的方法来重新加载代码?

1 个答案:

答案 0 :(得分:1)

我发现在HTML页面中调试所有内容更容易,使用withSuccessHandler取回变量。通过这种方式,您可以继续编辑.gs,单击按钮可以在控制台上获得新结果。

例如

google.script.run.withSuccessHandler(debugging).cBack(el1, el2);
google.script.run.withSuccessHandler(debugging).anotherCallBacl(el);

function debbugging( logs ){
  console.log( logs );
}

和.gs:

function cBack (el1, el2){
  Browser.msgBox('Data sent');
  return "el1 : " + el1 + " - el2: " + el2;
}