如何动态创建Google gannt图表?

时间:2016-03-03 07:30:53

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

我正在使用App Script创建仪表板。我想创建一个Gannt图表。我看了docuentation here,我有一个问题。我不知道我的Gannt图表的大小。有时会有10行,有时候是4行。所以我想动态创建它。

我成功地动态创建了一个HTML表,但我无法动态创建这个Gannt图表。

我有一个我连接的数据库,我返回一个矩阵,包含每一行,开始日期,结束日期等。 我正在使用scriptlet来调用我的函数:

<?  var miles = readMilestones(projectID);    
    for (var i = 0; i < miles.length; i++) {
    ?>
  data.addRow(
    [null, <?= miles[i].name?>, null,
     new Date(<?= miles[i].start ?>), new Date(<?= miles[i].end ?>), null, parseFloat(<?= miles[i].perc?>) * 100, null]);
  <? 
  }
  ?>

我的问题是这个循环只返回矩阵的最后一行。 我使用相同的循环来动态创建一个表,它工作得很好。这是表格的代码,工作正常。

<table>
    <tr>
    <td>#</td>
    <td>Milestone</td>
    <td>Start</td>
    <td>End</td>
    <td>%</td>
    </tr>      

    <?
    for (var i = 0; i < miles.length; i++) {
    ?>
    <tr>
    <td><?=i+1?></td>
    <td><?=miles[i].name?></td>
    <td><?=miles[i].start?></td>
    <td>        
    <?        
    if(miles[i].end == null){           
    ?>
    <?= '?' + miles[i].est_end?>
    <?
    }
    else {
    ?>
    <?=miles[i].end?>
    <?
    }
    ?>
    </td>

    <td style="<?=miles[i].color?>"><?=parseFloat(miles[i].perc) * 100 ?></td>
    </tr>
    <? } ?>        
    </table>

1 个答案:

答案 0 :(得分:0)

我设法找到了问题。显然第一个参数不能为空。我的意思是它可以,但它只返回一行。

解决方案是在第一个参数中加一个值,在我的例子中是'Task Id'。我把当前的迭代器。

<?
    for (var i = 0; i < mile.length; i++) {
    ?>
data.addRow(
    [<?=i?>, <?= mile[i].name?>, null,
     new Date(<?= mile[i].start ?>), new Date(<?= mile[i].end ?>), null, parseFloat(<?= mile[i].perc?>) * 100, null]
   );

   <? 
  }
  ?>