将电子表格详细信息打印到HTML

时间:2013-02-18 12:48:09

标签: javascript html google-apps-script

我已经在Google Apps脚本上创建了一个项目,并在其上有教程脚本,但它无法正常工作。基本上我希望HTML能够从Google电子表格上的数据范围打印数据。

我的.gs文件的代码是:

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Main Page');
}

function getData() {
  return SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRangeByName('dataRange').getValues();
}

我的html代码是:

<html>
 <? var data = getData(); ?>
</html>

我对Google Apps脚本应用程序还不熟悉,并多次查看过此代码。我创建的应用程序似乎根本不起作用。任何人都可以为我提供解决方案或解释为什么这不起作用吗?

1 个答案:

答案 0 :(得分:1)

我担心你的代码中出现了一些问题:

  1. 您应该使用return HtmlService.createTemplateFromFile('Main Page').evaluate();来获取带代码
  2. 的html页面的结果
  3. getData返回的值是一个数组,您应该以某种方式将其转换为HTML可以理解的内容...或者在html文件中使用一些代码来正确处理数组数据。
  4. 例如,字符串正在运行

    function getData() {
      var data = SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRange('testRange').getValues();
      return data.toString().replace(/,/g,'  |  ');
    }
    

    3:html中的语法错误,请尝试这样:

    <html>
     <?= getData(); ?>
    </html>
    

    或者像这样,如果数据是一个简单的数组,新行上的每个单元格:

    (代码使用return data.toString().split(',');

    <? var data = getData();
      for (var i = 0; i < data.length; ++i) { ?>
      <b><?= data[i] ?></b><BR>
    <? } ?>
    
    如果您将数据保存为 2维数组,

    在表中,这是一个完整的示例:

    test exec here

    代码:

    function doGet() {
      return HtmlService.createTemplateFromFile('Main Page').evaluate();
    }
    
    function getData() {
      var data = SpreadsheetApp.openById('0AtD2IyQN1tyGdHBiLWExb3NoSHZ2RlAzNTBrS1dQLXc').getRange('dataRange').getValues();
      return data;
    }
    

    HTML:

    <table border="5" bordercolor="FFCC00" style="background-color:#dddddd" width="400" cellpadding="5" cellspacing="3">    
    <? var data = getData();
      for (var i = 0; i < data.length; ++i) { ?>
      <tr>
    <?   for (n = 0; n< data[0].length; ++n) { ?>
      <td><?= data[i][n] ?></td>
    <? } }?>
    </tr>
    </table>
    

    我认为这就是全部...我不知道你的范围内有什么展示所以我不能再提供更多的提示了......