GASで生成した値を画面に出力したいときは Scriptlet を使用すると簡単に出力することができます。
Scriptletには「Standard scriptlets」と「Printing scriptlets」の2種類があります。
スクリプトとして実行しますが、結果は画面に出力されません。
for文などの処理をしたい場合に記述します。
<? ... ?>
スクリプトの実行結果を画面に出力することができます。
<?= ... ?>
Scriptletを使用するとスプレッドシートの値を画面に出力することができます。
以下のサンプルで確認をしてみましょう。
Code.gs
function doGet(e) {
var template = HtmlService.createTemplateFromFile('index');
var sheet = SpreadsheetApp.openById('XXXX').getSheetByName('XXXX');
var values = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()).getValues();
template.values = values; // シートから取得した値を画面に渡します
return template.evaluate();
}
index.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div class="wrapper">
<div id="header">
<h1>成績表</h1>
</div>
<div class="main">
<div class="events">
<table>
<tr>
<th>名前</th>
<th>国語</th>
<th>英語</th>
<th>数学</th>
</tr>
<? for (var i = 0; i < values.length; i++) { ?>
<tr>
<td><?= values[i][0]; ?></td>
<td><?= values[i][1]; ?></td>
<td><?= values[i][2]; ?></td>
<td><?= values[i][3]; ?></td>
</tr>
<? } ?>
<tr></tr>
</table>
</div>
</div>
</div>
</body>
注目する点は index.html の以下の処理です。
Scriptlet を活用してスプレッドシートから取得した値(values
)を設定しています。
<? for (var i = 0; i < values.length; i++) { ?>
<tr>
<td><?= values[i][0]; ?></td>
<td><?= values[i][1]; ?></td>
<td><?= values[i][2]; ?></td>
<td><?= values[i][3]; ?></td>
</tr>
<? } ?>