【发布时间】:2015-12-20 22:29:00
【问题描述】:
我正在尝试通过谷歌应用脚本在谷歌表格的右侧边栏中使用嵌入的 html。访问工作表的单元格并将其显示在 html5 画布元素上。我已经创建了一个 Code.gs 文件和一个 html 索引文件,并且已经成功地让电子表格生成了一个右侧边栏,其内容是包含 Canvas 元素的 HTML 文件。这使用
function openSidebar() {
var html = HtmlService.createHtmlOutputFromFile('index');
SpreadsheetApp.getUi().showSidebar(html);
}
现在我想在 Canvas 元素上显示一些电子表格单元格条目。我的第一个任务是使用这种方法在侧边栏上创建一个箱线图。我有五个包含五点摘要的单元格:min、Q1、Median、Q3、Max,但无法让 canvas 元素访问这些值。以下是不起作用的:
通过调用范围直接访问<script> </script>标签之间的单元格,例如:
var range = statsSheet.getRange(4,4);
var min = range.getValue();
它不起作用,因为 statsSheet 是在 Code.gs 文件上创建的。
如果这两行代码直接在 Code.gs 文件中,它们确实可以找到单元格值,但是 html 文件中的代码无法访问 min。
我也尝试创建一个单独的 .gs 文件 (boxPlot.gs) 并使用导入它
<script src = "boxPlot.gs"> </script>
但这仍然行不通。我无法访问变量 min ,因为它是全局变量或 boxPlot.gs 文件中函数的返回值。
如果能提供任何关于如何转换伪代码的帮助,我将不胜感激:<html> create canvas;<script> add min which resides at cell (4,4) as text onto the canvas; </script></html>
谢谢
感谢您的帮助,但我仍然无法将变量的值从 Code.gs 文件传递到 index.html 中的 <script> </script> 代码。使用您的建议,我能够运行 doSomething() 函数,但无法读取返回值。例如在 Code.gs 文件中,我有
做点什么(){
返回(“你好世界”);
}
在html页面中,我有
<script>
console.log(google.script.run.doSomething());
</script>
这会将“未定义”放在控制台上,而不是“Hello World”。 当然,我希望能够读取更复杂的元素,例如表单条目,但如果我什至无法读取“Hello World”返回值,那么复杂的任务将永远无法工作。任何建议将不胜感激。
【问题讨论】:
-
不要在返回值周围加上括号。只需使用
return "Hello World";
标签: javascript google-apps-script google-sheets html5-canvas sidebar