如何从Google Sheet获取数据以在部署的Web应用程序中使用

时间:2017-04-03 02:57:55

标签: google-apps-script

我正在使用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();

但我不知所措。谢谢你的帮助。

1 个答案:

答案 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
}