0

我在 Google Apps Script 上创建了一个项目,上面有教程脚本,但是它不起作用。基本上我希望 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 脚本应用程序相当陌生,并且已经多次查看此代码。我创建的应用程序似乎根本无法运行。谁能为我提供解决方案或解释为什么这不起作用?

4

1 回答 1

1

恐怕您的代码中有几处是错误的:

  1. 您应该使用return HtmlService.createTemplateFromFile('Main Page').evaluate();代码来获取 html 页面的结果
  2. getData 返回的值是一个数组,您应该以一种或另一种方式将其转换为 HTML 可以理解的东西……或者在 html 文件中添加一些代码来正确处理数组数据。

例如,一个字符串正在工作

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

3:你的html语法错误,试试这样:

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

或者像这样,如果 data 是一个简单的数组,则每个单元格都换行:

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

<? var data = getData();
  for (var i = 0; i < data.length; ++i) { ?>
  <b><?= data[i] ?></b><BR>
<? } ?>

或者如果您将数据保存为二维数组,则在表格中,这是一个完整的示例:

在这里测试执行

代码 :

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>

我想这就是全部...我不知道您要展示什么范围,所以我无法进一步提供更多提示...

于 2013-03-01T23:54:35.053 回答