使HTML侧栏填充电子表格

时间:2017-11-09 03:20:01

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

我通常不会使用网络,所以不太熟悉JS / HTML技巧。

我正在尝试使用侧边栏创建Google电子表格。 侧边栏有2个组合框和一个按钮,我希望当单击按钮时,电子表格中的相关单元格将填充基于组合框选择的数据。

以下是我目前的情况:

<html>
  <head>
    <base target="_top">
  </head>
  <body>
  <script>
      function update(){
        val qEl = document.getElementById("quarter");
        val q = qEl.options[qEl.selectedIndex].value;

        val lEl = document.getElementById("l2");
        val l = qEl.options[lEl.selectedIndex].value;

        google.script.run.update(q, l);
      }

</script>

  Select
  <select id="l2">
     <option value="volvo">Volvo</option>
     <option value="saab">Saab</option>
     <option value="mercedes">Mercedes</option>
     <option value="audi">Audi</option>
  </select>
  <br/>
  Select
  <select id="quarter">
     <option value="C6:N6">Q1</option>
     <option value="O6:Z6">Q2</option>
     <option value="AA6:AL6">Q3</option>
     <option value="AM6:AX6">Q4</option>
  </select>
  </br>
  <input type="button" value="Add" onclick="update()"/>
</body>   
</html>

然后是Google脚本代码:

function update() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();

  var html = HtmlService.createHtmlOutputFromFile('AddLarge')
      .setTitle('Add large item')
      .setWidth(300);

  SpreadsheetApp.getUi().showSidebar(html);
}

function updateLarge(cell, value) {  
 SpreadsheetApp.getActive().getActiveSheet().getRange(cell).setValue(value);
}

这不起作用....:\

1 个答案:

答案 0 :(得分:0)

以下修改如何?

修改要点:

  • 为了声明变量,它在GAS上使用var。我认为这可能是一个错字。
  • 对于var l = qEl.options[lEl.selectedIndex].value;,使用qEl。因此,检索在"quarter"处选择的值。我认为var l = document.getElementById("l2").value;也可以使用。
  • 如果是google.script.run.update(q, l);,则会将q, l发送到GAS脚本的update()。在您的情况下,我认为q, l应该发送到updateLarge(cell, value)

当这些内容反映到您的脚本中时,您的脚本将变为下方。请对HTML中的javascript进行此修改。我认为你的GAS脚本运行正常。

来自:

  <script>
      function update(){
        val qEl = document.getElementById("quarter");
        val q = qEl.options[qEl.selectedIndex].value;

        val lEl = document.getElementById("l2");
        val l = qEl.options[lEl.selectedIndex].value;

        google.script.run.update(q, l);
      }

</script>

致:

<script>
  function update() {
    var qEl = document.getElementById("quarter");
    var q = qEl.options[qEl.selectedIndex].value;

    var lEl = document.getElementById("l2");
    var l = lEl.options[lEl.selectedIndex].value;

    google.script.run.updateLarge(q, l);
  }
</script>

如果我误解了你的问题,我很抱歉。