从对话框提示中传回值以更新电子表格

时间:2017-06-10 05:22:46

标签: javascript html google-app-engine

Google表格对我来说是新的,JavaScript也是如此。我已经阅读了很多Google的例子。我试图跟随他们,但没有成功。

我有一张电子表格,用于追踪我儿子的津贴和支出。我已设法让它自动填充他的每周津贴,我可以将资金转移到这所大学'帐户,但这是因为提示功能有效,而这两个功能只需要一个参数。现在我需要三个这样的参数,因此我需要分支出简单的提示。

根据我遵循的示例,单击提交按钮时对话框将关闭 - 这次迭代不会发生 - 但我从未接到过对insertGame的调用。非常感谢任何和所有的帮助。但是,知道我是一个脚本新手,因此需要比大多数人更多的解释。

Code.gs

function BuyAGame_()
{
  var html = HtmlService.createHtmlOutputFromFile('GamePurchase')
      .setWidth(400)
      .setHeight(300);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(html, 'My custom dialog');
}

function insertGame(form){
  var Value = form.Price;
  if(form.Refund)
    Value = Value * -1;
  InsertNewTransactionOnDemandAccount( new Date(), Value, form.Name, 'normal', 'italic', "Game", null );
}

GamePurchase.html

<script>
function Close()
{
  google.script.run.insertGame(document.getElementById('myForm'));
  google.script.host.close();
}
</script>
<form id="myForm" onsubmit="handleFormSubmit(this)">
  Game Name:<input type="text" name="Name"><br>
  Game Price:<input type="text" name="Price"><br>
  Is this a refund?<input type="checkbox" name="Refund" value="Refund"><br>
  <input type="submit" value="Submit" onclick="Close()" />
</form>

1 个答案:

答案 0 :(得分:0)

答案在函数Close()中。从该函数,直接调用code.gs文件中的处理函数。表单对象,或者实际上任何东西都可以传回来。然后调用.host.close()以关闭html对话框。

google.script.ru,

function Close()
{
  google.script.run.insertGame(document.getElementById('myForm'));
  google.script.host.close();
}