我正在使用Google App脚本,但我无法找到这个相当简单的任务的答案:如何从我的code.gs中的Google表格中获取数据,然后在已发布的Web应用程序中使用它(用于某些可视化)用D3)?
我想从电子表格中获取所有列和行,然后在数据中使用这些列和行。为了便于使用,它们最好是JSON,但我找不到如何从我的code.gs中的Sheet中获取所有(或任何)数据的细节,然后在index.html中使用它。 / p>
到目前为止,我有这样的事情:
code.gs
function getData(){
var sheet = SpreadsheetApp.openById("1NCNsdEGAHXWhZMEHnOflsIqElKdQSQxy83iM5vUIa9k");
//get desired range
return sheet;
}
的index.html
在index.html中的<script>
:
google.script.run.getData();
但我不知所措。谢谢你的帮助。
答案 0 :(得分:1)
获取数据非常简单。但是,这必须在服务器端和客户端都正确完成。
对于 code.gs ,您需要返回实际数据,但目前return sheet
只返回工作表对象。你需要做的是
var vals = sheet.getDataRange().getValues()
现在可以获取工作表值的二维数组。现在请注意,sheet
必须是sheet object
而不是spreadhseet object
。因此,如果您的电子表格包含许多工作表,请确保使用类似
var sheet = SpreadsheetApp.openById("1NCNsdEGAHXWhZMEHnOflsIqElKdQSQxy83iM5vUIa9k").getSheets()[0];
或
var sheet = SpreadsheetApp.openById("1NCNsdEGAHXWhZMEHnOflsIqElKdQSQxy83iM5vUIa9k").getSheetByName('Sheet1');
现在,既然您想要将数据作为JSON获取,那么您真正需要做的就是
vals = JSON.stringify(vals)
现在你有了一个JSON字符串值。然而,这只是其中的一半,因为您编写的index.html
将不会使用数据,因为它调用服务器端功能,但不会侦听响应。为此,您需要使用成功处理程序here。基本上,您必须调用index.html
中将使用返回的vals
变量的函数。像
google.script.run.withSuccessHandler(useData).getData();
function useData(data) {
data = JSON.parse(data)
//now you have a 2D array in your index.html and you can use it as you wish within these client side scripts
}