在HTML页面中显示Google表格数据

时间:2017-10-29 19:16:47

标签: google-apps-script google-sheets

我有一张Google Sheet,其中包含单元格A1和A2中的值。此工作表中还创建了一个index.html文件。我想在html文件中显示Google表格中的信息。这就是我所拥有的:

Code.gs:

function myFunction() {
  var html = HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi().showModalDialog(html, 'Display Sheet Data');
}

的index.html:

<!DOCTYPE html>
<html>

<head>
  <script type="text/javascript">
    function setPageValues () {

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var myFirstValue  = ss.getRange(1, 1).getValue();
      var mySecondValue = ss.getRange(2, 1).getValue();
      document.getElementById("first").innerHTML = myFirstValue;
      document.getElementById("second").innerHTML = mySecondValue;

      }
  </script>
</head>

<body onload="setPageValues()">
  <br>data from cell A:1 = <span id="first"></span>
  <br>data from cell A:2 = <span id="second"></span>
</body>

</html>

当我从Google Sheet脚本编辑器运行myFunction时,包含index.html页面的窗口会正确显示。工作表值不会。

我觉得愚蠢的问一些似乎应该是如此基本的东西但是......&#34;每个人都是一个菜鸟#34;!提前谢谢!

1 个答案:

答案 0 :(得分:0)

以下修改过的脚本怎么样?要使用Google Apps脚本检索和发送数据,您可以使用google.script.run

Code.gs:

function myFunction() {
  var html = HtmlService.createHtmlOutputFromFile('index').setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi().showModalDialog(html, 'Display Sheet Data');
}

function getValuesFromSS(range) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return ss.getRange(range).getValues();
}

的index.html:

<!DOCTYPE html>
<html>

<head>
  <script type="text/javascript">
    function setPageValues () {
      google.script.run.withSuccessHandler(disp).getValuesFromSS("A1:A2");
    }

    function disp(values){
      document.getElementById("first").innerHTML = values[0][0];
      document.getElementById("second").innerHTML = values[1][0];
    }
  </script>
</head>

<body onload="setPageValues()">
  <br>data from cell A:1 = <span id="first"></span>
  <br>data from cell A:2 = <span id="second"></span>
</body>

</html>

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