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 Script アプリケーションにかなり慣れていないので、このコードを何度も見てきました。作成したアプリがまったく機能していないようです。誰かが私に解決策を提供したり、これが機能しない理由を説明したりできますか?

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>

またはこのように、データが単純な配列の場合、新しい行の各セル:

(コード使用時return data.toString().split(',');)

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

または、データを2 次元配列として保持する場合はテーブルで、完全な例を次に示します。

ここで実行をテストします

コード:

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 に答える