使用Google Apps脚本将对话框中输入字段的值返回到code.gs中的var

时间:2015-12-14 05:36:29

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

我一直在处理一个Google Sheet,它会在打开时触发一个对话框。我无法做到的是弄清楚如何从输入字段中获取值到code.gs中的变量

我一直在寻找教程和代码示例很长一段时间,并且找不到任何可以帮助我了解如何完成此操作的内容。

现在......在这种特殊情况下,我只需要在对话框中从日期选择器中获取日期。当单击按钮从code.gs运行一个函数时,我想弄清楚如何从datepicker中获取函数。

到目前为止我所拥有的是:

code.gs:

function optionOverlay() {
  var html = HtmlService.createHtmlOutputFromFile('overlayHTML')
    .setSandboxMode(HtmlService.SandboxMode.IFRAME)


  SpreadsheetApp.getUi()
    .showModalDialog(html,' ')
}

function blankSheet() {
  // The code below activates the Schedule Template and creates a duplicate of the blank template sheet.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var st = ss.getSheetByName("Schedule Template");
  st.activate()
  SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();

  // This changes the contents of the cell (I1) to the date from the dialog box.
  var dialogDate = ?????
  SpreadsheetApp.getActiveSheet().getRange('I1').setValue(dialogDate);

  // This changes the new sheet's name to the date range of the week [based on cell (I2)].
  var dateRange = SpreadsheetApp.getActiveSheet( ).getRange("I2").getValue();
  SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(dateRange);

}

overlayHTML:

<h1>Create new schedule for the week starting on: </h1>

<input type="date" name="datePicker" id="datePicker" />

<button onclick="google.script.run.blankSheet()">Create schedule all new schedule</button>
<button onclick="google.script.run.copyLast()">Use last week as template</button>

</div>

我已经看到很多关于在折旧的ui服务中创建jQuery日历和事件处理程序,但没有关于如何使用HtmlService将数据从一个地方获取到另一个地方。我在这一点上很困惑,并且喜欢任何方向。

1 个答案:

答案 0 :(得分:0)

要从输入标记中获取值,可以使用DOM方法getElementById('idName')和元素的value属性。

<input type="date" name="datePicker" id="datePicker" />

<button onclick="sendInputToGS()">Create schedule all new schedule</button>

<script>
  window.sendInputToGS = function() {
    var theDate = document.getElementById("datePicker").value;
    google.script.run.blankSheet(theDate)
  }
</script>

在Code.gs文件中,您需要使用括号中的参数检索发送的值。

function blankSheet(dateArg) { //dateArg receives the value sent