03_家計簿アプリ

【03_家計簿アプリ】家計簿アプリ〔解説編Vol.2〕テーブル形式フォームの作成

この記事では、テンプレート形式のフォームをGASで作成する部分の解説になります。以下の様にプルダウンがあるところが一工夫した部分になります。プルダウンは定型の文字を入力したい場合にとても便利です。またプルダウンのオブジェクトを取得するためにJQueryというツールを使います。

前の記事の続きです。この記事は主にテンプレートでの記事になります。

テーブルのヘッダー部にシート名を表示する

今回のテーブル形式のフォームはスプレッドシートの中で日付を名前にしたシートを読み込んでいます。

その名前が分かる様に表示させますが、コードは以下の様になります。

<span >簡単データベース:シート名</span>
<span id="myrDate"><?=myDate ?></span>
</p>

シート名の変数myDateをインラインコード(スクリプトレット)の形で記述して表示させています。(このmyDateはテンプレート側にスクリプト側から引き渡されたものです。詳しくは前の記事を参照ください)

<?=myDate?>

テーブルの中にプルダウンを配置する

今回作るテーブル形式のフォームにはプルダウンがあります。実装したフォームは以下の様になります。

プルダウン部分をクリックすると、以下の様に項目が選べるという仕様です。(1列目は「現金/カード払い」などフラグ的なフリーワードを入力し、2列目で定型の種類を入力する使い方を想定しています)

この様なプルダウンを作ることそのものは、それほど難しくはありません。テンプレートで以下の様に記述します。編集可能なセルを示す<td contenteditable=”true”>・・・</td >の中の・・・部分に以下の様なコードを記述します。

<td contenteditable=”true”>

</td >

<td contenteditable=”true”>
ここに配置する要素のコードを記入
</td >
<select>
<option value=”プロパティ値1″ >表示テキスト1 (selected)</option>
<option value=”プロパティ値2” >表示テキスト2(selected)</option>
 ・・選択肢を同様に追加・・・
</select>

<select>タグの中に、<option>タグで選択肢を入れるという訳です。value=・・・の部分は選択時のオブジェクトのvalueプロパティの値で、表示テキスト名と異なる値を設定する事も可能です。

表示テキストの後ろにある「selected」は、必要であれば1項目だけ記載でき、選択した項目が初期の選択状態を示します。

詳細はあとに譲りますが、作成済みのシートから情報を読み込んできたとき、該当のセルに項目名と同じ文字が記入されていた場合のみ「selected]は記載する様にしています。

<? if(Cell == ‘項目名‘){ ?>selected <? } ?>

インラインコードで挟まれた部分にselectedがあるのが分かりますか?

テーブル全体のコードは以下の様になります。

<!---- テーブルタグと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 {  
           // 4列目は inputmode="numeric" にする
           if (iCol == 4) { 
                ?><td contenteditable="true" inputmode="numeric"><?=Cell ?></td><?
                
           // 2列目は Selet 要素 にする
           } else if (iCol == 2){
                 // td で iD名を 「R行番号」 にする
                ?><td contenteditable="true" inputmode="text" id="R<?=iRow ?>">
                    <select >
                      <!-- 値に応じて「selected」を設定する -->
                      <option value="" <? if(Cell == ''){ ?> selected <? } ?>>-</option>
               <option value="食費" <? if(Cell == '食費'){ ?> selected <? } ?>>食費</option>
                      <option value="雑貨" <? if(Cell == '雑貨'){ ?> selected <? } ?>>雑貨</option>
                      <option value="衣類" <? if(Cell == '衣類'){ ?> selected <? } ?>>衣類</option>
                      <option value="交通"<? if(Cell == '交通'){ ?> selected <? } ?>>交通</option>
                    </select>                               
                </td><? 
                
           }else{
               ?><td contenteditable="true" inputmode="text"><?=Cell ?></td><?            
           }
        } 
    } 
}
?>
<!---- JavaScriptのインライン記述-【↑ここまで】---->
</table>

さて、ここらで記事を一旦切ります。次回はプルダウンを含むテーブルから値を読み取ってスプレッドシートに記載する方法をご説明します。

結び

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村