前回#16ではindexファイルに直接値を記入しましたが、テンプレートのプロパティとして指定し、コード.jsからセットできる様にしてみます。
ここでは、まずtitleプロパティを「MyTaskApp」としてみます。
そこで、特殊な記号を使用します。
<?= プロパティ名 ?>
<h1><?= title ?></h1>
こうなりますね。

次に、コード.js側で
template.title = ‘MyTaskApp’;
とします。
template.title = 'MyTaskApp';

結果を見てみます。

次はTask側です。
template.tasks ですが、少し複雑なので別途関数にします。
template.tasks = getTasks();
とします。
function doGet() { var template = HtmlService.createTemplateFromFile('index'); template.title = 'MyTaskApp'; template.tasks = getTasks(); return template.evaluate(); }
ではTaskを取得する関数を作り込んでいきます。
function gatTasks() { }
関数の中身ですが、
まずシートの取得です。
var sheet = SpreadsheetApp.getActiveSheet();
ですね。
function gatTasks() { var sheet = SpreadsheetApp.getActiveSheet(); }
シートの中身の取得は

getRange(row, column, numRows, numColumns)
を使います。
row・・・・行は2行目(2)
column・・・列は2列目 (2)
numRows・・・行数は最後の行までの行数から1行分(タイトル行)引きます。
sheet.getLastRow() – 1
numColumns・・・列数は1です。
sheet.getRange(2, 2, sheet.getLastRow()-1, 1)
さらにgetValues()とします。
sheet.getRange(2, 2, sheet.getLastRow()-1, 1).getValues();
return で返します。
以下の様になりました。
function getTasks() { var sheet = SpreadsheetApp.getActiveSheet(); return sheet.getRange(2, 2, sheet.getLastRow()-1, 1).getValues(); }
ループ構造を使い埋め込んでいきます。
for文を使います
定義は以下ですね。
今回はこうなります。
制御構造を埋め込んでいきますので<? ?>を使います。<?= ?>ではありません。注意してください。

では結果を見てみます。

今回は少し飛ばしすぎましたかね?
for文など新しい知識が入ってきました。
おいおい説明を追加していくつもりです。ご勘弁ください。
コメント