記事概要
前の記事ではスプレッドシート上のデータを取得することをしました。この記事ではスクリプト側で引き渡したセルの値をテンプレート上でどの様に扱うのかを解説します。
目次
テンプレート側に引き渡した変数を使用して、WEBサイト用のフォームに値を埋め込む
引き継いだmyCells配列から値を拾い出して、冒頭の画像の様なテーブルを表示するには、テンプレート(THMLファイル)で、<table>~</table>タグ中に以下の様なコードを記述します。(インラインコード部は薄い黄色、その中に埋め込んだ変数は薄い橙色にしてあります)
<!—- テーブルタグとID名称宣言—–>
<table id=”TableBody”>
・
<!—- JavaScriptのインライン記述-【↓ここから】—->
<?
・
// GsValuesの各行 iRow に対して実行。myCellsはGASから渡される。
for(var iRow in myCells) {
・
・// 各行を Row に代入
・var Row = myCells[iRow];
・・
・// 行頭タグ 「tr」|タグは ?>・・・<?で挟む
・?><tr><?
・・
・// カレント行の 各列 iCol に対して実行
・for(var iCol in Row) {
・・・
・// 該当行の 各列 iCol をCellに代入
・・var Cell = Row[iCol];
・・
・// 見出しや末尾の列の場合はthタグ記述
・・if (iRow == 0 || iCol == 0 || iCol == 5) {
・・・?><th><?=Cell ?></th><?
・・・
・// 他の場合tdタグ記述
・・} else {
・・・if (iCol == 1 || iCol == 4) {
・・・・・?><td contenteditable=”true” inputmode=”numeric”><?=Cell ?></td><?
・・・} else {
・・・・・?><td contenteditable=”true” inputmode=”text”><?=Cell ?></td><?
・・・}
・・}
・}
・?></tr><?
}
?>
<!—- JavaScriptのインライン記述-【↑ここまで】—->
</table>
<table id=”TableBody”>
・
<!—- JavaScriptのインライン記述-【↓ここから】—->
<?
・
// GsValuesの各行 iRow に対して実行。myCellsはGASから渡される。
for(var iRow in myCells) {
・
・// 各行を Row に代入
・var Row = myCells[iRow];
・・
・// 行頭タグ 「tr」|タグは ?>・・・<?で挟む
・?><tr><?
・・
・// カレント行の 各列 iCol に対して実行
・for(var iCol in Row) {
・・・
・// 該当行の 各列 iCol をCellに代入
・・var Cell = Row[iCol];
・・
・// 見出しや末尾の列の場合はthタグ記述
・・if (iRow == 0 || iCol == 0 || iCol == 5) {
・・・?><th><?=Cell ?></th><?
・・・
・// 他の場合tdタグ記述
・・} else {
・・・if (iCol == 1 || iCol == 4) {
・・・・・?><td contenteditable=”true” inputmode=”numeric”><?=Cell ?></td><?
・・・} else {
・・・・・?><td contenteditable=”true” inputmode=”text”><?=Cell ?></td><?
・・・}
・・}
・}
・?></tr><?
}
?>
<!—- JavaScriptのインライン記述-【↑ここまで】—->
</table>
・
下線のあるピンクの文字がスクリプトから引き渡されたプロパティの値が格納されている変数です。このようにテンプレート内でスクリプトからの値を利用するには、プロパティと同じ名前の変数にするだけで利用できます。
スクリプトから引き渡されたプロパティの値・・プロパティと同じ変数を使うだけ
とても簡単です!
セルの値をmyCellsから引き出すのは少々煩雑で、行配列を引き抜いて、次に行配列から各セルを抽出します。
行配列を引き出す
行配列 = myCells[行番目];
行配列からセルを抽出
セル値 = 行配列[列番目];
行配列 = myCells[行番目];
行配列からセルを抽出
セル値 = 行配列[列番目];
エクセルのVBAと異なり、配列(行番目、列番目)という風な指定では抽出できないので気を付けてください。
あとは細かい書式設定のため、以下を反映しています。
- 1列目、1行目、6列目はくth>タグとしています。これらを見出しとしてだけ書式を変えられる様にするためです。
- <td>タグで編集する列ではcontenteditable=”true”にしています。
- さらに数値の入る列ではinputmode=”numeric”、文字の入る列ではinputmode=”text”の属性設定にしています。
次の記事ではこの表を編集した結果を、再びスプレッドシートに保存する方法をご説明します。