Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用google应用程序脚本将服务器端数据表返回到客户端_Javascript_Google Apps Script_Datatable_Google Visualization_Google Apps - Fatal编程技术网

Javascript 使用google应用程序脚本将服务器端数据表返回到客户端

Javascript 使用google应用程序脚本将服务器端数据表返回到客户端,javascript,google-apps-script,datatable,google-visualization,google-apps,Javascript,Google Apps Script,Datatable,Google Visualization,Google Apps,我想将我在GoogleApps脚本中创建的带有电子表格数据的datatable返回给客户端。我使用一个成功的处理器来获取数据,并使用它来创建一个图表。我唯一的问题是我的数据是空的。似乎我无法将datatable对象返回到客户端页面 我需要将其发送到客户端,因为Google Apps脚本正在弃用UIApp函数,所以我需要客户端中的Google.visualization函数 代码.gs function doGet() { return HtmlService.createHtmlOutputF

我想将我在GoogleApps脚本中创建的带有电子表格数据的datatable返回给客户端。我使用一个成功的处理器来获取数据,并使用它来创建一个图表。我唯一的问题是我的数据是空的。似乎我无法将datatable对象返回到客户端页面

我需要将其发送到客户端,因为Google Apps脚本正在弃用UIApp函数,所以我需要客户端中的Google.visualization函数

代码.gs

function doGet() {  return HtmlService.createHtmlOutputFromFile('Index.html')
  .setSandboxMode(HtmlService.SandboxMode.IFRAME);}

function getDataTable()
{
  var bestanden = DriveApp.searchFiles('title contains "' + "kwalrap" + '"');
  while (bestanden.hasNext()) 
  {
    var bestand = bestanden.next();
    var docid = ( bestand.getId() );
       Logger.log(docid);
    };
  var sheets= SpreadsheetApp.openById(docid).getSheets();
  //vanaf sheet 0. tot hij bij de laatset sheet is. dan steeds 2 sheets verder.
  for(var j = 0; j < 2; j = j+1)
  {
    var sheet = sheets[j];
    //Logger.log(sheet.getSheetName());
    var range = sheet.getRange(2,1,sheet.getLastRow(),8);
    var inforange = sheet.getRange(2,1,1,8);
    var values = range.getValues();
    var infovalues = inforange.getValues();
    var data = Charts.newDataTable()
      .addColumn(Charts.ColumnType.STRING, "Tijd")
      .addColumn(Charts.ColumnType.NUMBER, "dco")
      .addColumn(Charts.ColumnType.NUMBER, "dcp")
      .addColumn(Charts.ColumnType.NUMBER, "dct")
      .addColumn(Charts.ColumnType.NUMBER, "dcz")
      .addColumn(Charts.ColumnType.NUMBER, "ldc")
      .addColumn(Charts.ColumnType.NUMBER, "lv")      

    for(var i = 0; i < sheet.getLastRow()-1; i++)
    {
      data.addRow([values[i][0],values[i][1],values[i][2],values[i][3],values[i][4],values[i][5],values[i][6]]);
      Logger.log(values[i]);
    }
   var dataTable = data.build();
   return dataTable;
// return  JSON.stringify(values);
  }
}
function doGet(){return HtmlService.createhtmloutpfromfile('Index.html'))
.setSandboxMode(HtmlService.SandboxMode.IFRAME);}
函数getDataTable()
{
var bestanden=DriveApp.searchFiles('标题包含“+”kwalrap“+”);
while(bestanden.hasNext())
{
var bestand=bestanden.next();
var docid=(bestand.getId());
Logger.log(docid);
};
var sheets=SpreadsheetApp.openById(docid.getSheets();
//vanaf床单0张。全套床单为。dan steeds 2张绿色床单。
对于(var j=0;j<2;j=j+1)
{
var表=表[j];
//Logger.log(sheet.getSheetName());
var range=sheet.getRange(2,1,sheet.getLastRow(),8);
var inforange=sheet.getRange(2,1,1,8);
var values=range.getValues();
var infovalues=inforange.getValues();
var data=Charts.newDataTable()
.addColumn(Charts.ColumnType.STRING,“Tijd”)
.addColumn(Charts.ColumnType.NUMBER,“dco”)
.addColumn(Charts.ColumnType.NUMBER,“dcp”)
.addColumn(Charts.ColumnType.NUMBER,“dct”)
.addColumn(Charts.ColumnType.NUMBER,“dcz”)
.addColumn(Charts.ColumnType.NUMBER,“ldc”)
.addColumn(Charts.ColumnType.NUMBER,“lv”)
对于(var i=0;i
Index.html

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

   google.load("visualization", "1", {packages:["corechart"]});

    function onSuccess(data) {
  var options = {
      title: 'Why doesn't this work'
    };
  new google.visualization.LineChart(
      document.getElementById('visualization_div')).draw(data, options);
  }

  google.script.run.withSuccessHandler(onSuccess)
      .getDataTable();

 </script>
    </head>
 <body>
    <div id="visualization_div" style="width: 600px; height: 380px;';"></div>
     </body>
</html>

load(“可视化”、“1”、{packages:[“corechart”]});
函数onSuccess(数据){
变量选项={
标题:“为什么这不管用”
};
新的google.visualization.LineChart(
document.getElementById('visualization_div')).draw(数据、选项);
}
google.script.run.withSuccessHandler(onSuccess)
.getDataTable();
为什么我的数据变量在onSuccesHandler中为null,以及如何在客户机中获取datatable


感谢您的帮助

这是因为您需要返回一个普通的javascript数组,而不是纯服务器端对象的数据表。

您是否检查了浏览器中的javascript控制台是否有错误?我没有收到错误。如果我在图表中使用此数据,它会在小部件中显示:“数据表未定义”,因为数据为空。感谢您的响应。我想是的,但是你知道如何从数据表轻松创建数组吗?你不知道。只需将值数组传递给客户端。然后在客户端上构建数据表。我将尝试。非常感谢您确保使用应用程序脚本iframe模式。然后遵循常规的谷歌图表文档,而不是应用程序脚本。