【问题标题】:How to retrieve data from spreadsheet for chart google script. (Using HTML Service)如何从图表谷歌脚本的电子表格中检索数据。 (使用 HTML 服务)
【发布时间】:2016-01-29 19:24:05
【问题描述】:

嘿,早上好/下午好/晚上好,这取决于你们在哪里!

请教你们一个简短的问题。我在这个问题上被困了一段时间,我试着环顾四周,但我似乎找不到这个特定问题的答案。

所以我正在尝试使用带有 html 服务的谷歌脚本创建一个柱形图(因为他们的 UIApp 服务现在已被贬值)。我正在尝试从已经创建的电子表格中检索数据。但是当我使用这段代码时,页面出现空白,好像后台有一些错误。

var sheet = SpreadsheetApp.openById("1gdRB6FFV426bAj95C0xJlqSucnnX0Z5ATVQdC2");

所以这里有一些细节:

1) 我将这一行放在我的 Index.html 文件中的一个函数中,我已调用

drawChart();

2) 我确实将它们包裹在这个标签中。

<script type="text/javascript">

3) 我知道这行代码是问题的原因,因为一旦我将其注释掉,我的带有临时数据的临时图就会弹出,并且页面运行正常。但是一旦取消注释,它就会清空整个页面。

有什么想法吗?

我想知道是否必须将这行代码实际放在“Code.gs”文件中,然后了解如何将数据从 Code.gs 传输到我的 Index.html 文件。如果是这种情况,任何人都可以指出我可以按照指示进行操作的方向吗?

提前谢谢你们。

真诚地, 西卡里克斯

【问题讨论】:

  • 如果SpreadsheetApp 在 HTML 脚本标签中,它将不会运行。 SpreadsheetApp 只能在 .gs 文件中使用。它不是 JavaScript,它是 Google Apps 脚本独有的。
  • 有关将图表放入独立 Web 应用程序的示例,请参阅此共享的应用程序脚本。 Shared Apps Script File
  • 请帮助我们帮助您。如果 GAS 脚本运行良好,则错误在 HTML 中的某处 - 您可以通过检查浏览器控制台来查看它。正如 Sandy 所说,这很可能是由于 JavaScript 中有那行代码而不是 .gs 文件。另请注意,您不一定需要SpreadsheetApp,您也可以使用只能在 JavaScript 中使用的google.visualization.Querydetails here
  • 好吧,我的 HTML 标签中有错误,因为像 @SandyGood 说的 SpreadsheetApp 不会在 HTML 中运行。那么我是否可以在 .gs 文件中编写 SpreadsheetApp 代码并将数据发送到我的 HTML 标记中的变量?还是我必须像@Adelin 提到的那样使用“google.visualization.Query”来从电子表格中收集所有数据?
  • 您需要查看google.script.run 客户端API。这就是用来调用服务器并使用withSuccessHandler() 处理返回的数据的方法。 Link to Google Documentation

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


【解决方案1】:

您必须使用withSuccessHandler(functionNameToReceiveData)

<script>
  function getData() {
    google.script.run
      .withSuccessHandler(functionNameToReceiveData)
      getData();
  };

  function functionNameToReceiveData(theDateReceivedHere) {
    Logger.log('theDateReceivedHere: ' + theDateReceivedHere;

  };
</script>

您不能使用:var data = google.script.run.getData(); 您必须使用withSuccessHandler(functionNameToReceiveData)

【讨论】:

  • 感谢您的帮助@Sandy Good。但我有实际的图表工作。我真正需要的是一种从电子表格接收数据的方法。还在尝试不同的东西。但还没有成功。我试过的是var data = google.script.run.getData();,在那个函数中我有来自电子表格的数据。它在日志中填充。但它似乎不允许我将数据返回到位于 index.html 文件中的var data
  • 好的,对于我的 .gs 文件,我有这个 link 对于我的 .html 文件,我有这个。 link 还是不行。但是我做了一些测试。我尝试输入一些像dataTable.addRows([[new Date('2014-09-14'), 5093, 1613]]); 这样的硬编码数据,然后在我的 .html 文件中注释掉“数据”。仍然没有工作。然后在我的 .gs 文件中,我尝试返回不同的值而不是“数据”。所以我写了这个。 return 1 然后它起作用了。所以我得出结论,由于某种原因我不能返回“数据”。想法?
  • 这也是我在开发者控制台中遇到的错误link 我完全不知道这意味着什么。这很奇怪,因为我确实在返回之前获取了数据,如下所示link 谢谢你们的帮助!
  • 抱歉,这是错误的错误链接。这是我收到link 的错误。如果不支持返回数据。我如何将这些数据从我的 .gs 文件发送到我的 .html 文件?
【解决方案2】:

@桑迪好

嘿,伙计,我要感谢您的所有帮助。你的回答实际上很棒。但是,除了您纠正我的错误之外,还有一个错误。在我的实际电子表格中,我将其作为“日期”值。但格式与我的“dataTable”中的数据类型不匹配。它现在正在工作。我做了你告诉我的所有更改,但另外我将值类型从“日期”更改为“文本”。然后在我的 for 循环中,我使用文本作为格式编写了一个“new Date()”函数,这里有用的是一些屏幕截图来显示我的最终结果。

link

link

【讨论】:

  • 感谢您的反馈并标记为正确答案。我很高兴你让它工作。我不知道您是否可以编辑我的答案,但如果可以,您可以进行更新。
猜你喜欢
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
相关资源
最近更新 更多