javascript - 谷歌未在谷歌脚本中定义 - 错误

标签 javascript google-apps-script runtime-error google-sites

我从使用 google.visualization 创建表格的 google 脚本中收到错误“google is not defined”。

如何添加对 google 脚本的引用,如果我让它在脚本中运行,我还必须将它添加到我的 google 站点吗?我会把我的脚本放在下面。

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

  function doGet() {

    drawTable()

  }
function drawTable() {
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Name');
  data.addColumn('number', 'Salary');
  data.addColumn('boolean', 'Full Time');
  data.addRows(1);
  data.setCell(0, 0, 'John');
  data.setCell(0, 1, 10000, '$10,000');
  data.setCell(0, 2, true);

  var table = new google.visualization.Table(document.getElementById('table_div'));
  table.draw(data, {showRowNumber: true});

  google.visualization.events.addListener(table, 'select', function() {
    var row = table.getSelection()[0].row;
    alert('You selected ' + data.getValue(row, 0));
  });
}

最佳答案

Apps 脚本使用 JavaScript 作为服务器端代码。最初,JavaScript 被设计为一种在浏览器(在用户计算机上)中运行的语言。 HTML 文件中的 JavaScript 不会在 Google 的服务器上运行 JavaScript。

在脚本编辑器中,您可以创建两种类型的文件:

  • 脚本
  • HTML

doGet() 只能在 .gs 脚本文件中使用。您不能在 HTML JavaScript 中使用它。

您的 Code.gs 文件应该包含一些如下所示的代码:

代码.gs

function doGet() {
  return HtmlService.createTemplateFromFile('index')
    .evaluate()
    .setSandboxMode(HtmlService.SandboxMode.NATIVE);
};

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename).getContent();
};

然后您需要一个 HTML 文件。

index.html

<div id="EntireSite">

  <div>
      body
    <?!= include('Chart'); ?>
    <br><br><br><br><br><br><br><br><br><br><br>
  </div>

  <div>
    My Footer
  </div>

  <div style="background: brown">
    <br>
    <br>
    <br>
    <br>
  </div>

</div>

在此示例中,您需要为图表创建第二个 HTML 文件:

图表.html

<script type="text/javascript">
    google.load("visualization", '1', {packages:['corechart']});
    google.setOnLoadCallback(drawChart);

    function drawChart() {

      var data = google.visualization.arrayToDataTable([
        ['Element', 'Density', { role: 'style' }],
        ['Copper', 8.94, '#b87333', ],
        ['Silver', 10.49, 'silver'],
        ['Gold', 19.30, 'gold'],
        ['Platinum', 21.45, 'color: #e5e4e2' ]
      ]);

      var options = {
        title: "Density of Precious Metals, in g/cm^3",
        bar: {groupWidth: '95%'},
        legend: 'none',
      };

      var chart_div = document.getElementById('chart_div');
      var chart = new google.visualization.ColumnChart(chart_div);

      chart.draw(data, options);
  }
</script>

<div id='chart_div'></div>

关于javascript - 谷歌未在谷歌脚本中定义 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29441664/

相关文章:

javascript - grunt-contrib-connect 忽略任务选项

javascript - Angular2 加载文件请求过多

javascript - Google Apps Script V8 运行时使用哪个版本的 ECMAScript?

scala - 无法从 REPL 运行 .scala 文件?

java - Android Studio : Early Access Java versions may cause compatibility issues

javascript - js文件中web组件的继承

javascript - 如何在不选择模式配置参数的情况下使用 Mongoose 在 MongoDB 模式实例化的关联数组/对象中执行 foreach?

javascript - 比较两个日期时出现意外结果

javascript - 不正确的范围高度,是 1 但应该是 344 - 当尝试使用 .setValues() 将范围带到另一张纸时

c - 关于hackerrank问题的运行时错误无缘无故?