関連テーブルプラグインでのテーブル表示

関連テーブルプラグインで下記を参考にテーブル表示に挑戦しています。
rex0220 関連テーブルプラグイン テーブル表示 #kintone - Qiita

1列目を50%2列目を20%3列目を10%4列目を20%で幅指定を行いたいのですが、うまくできません。
また1列目は列幅に対し文字が長い際には改行、あるいは[はみ出た文字列を「…」で表示するようにしたいと思っています。
HTMLの設定をどう計算式に記載するのか、よく理解できていないので教えていただけますと幸いです。

LET(
table, TARRAY(詳細),
IF(ARRAY_COUNT(table) = 0, “”,
TAGS_HTML(
TAG(“style”, JOIN(ARRAY(
“.custom-table { width: 100%; table-layout: fixed; border-collapse: collapse; }”,
“.custom-table th { display: none; }”,
“.custom-table td { white-space: nowrap; border: none; padding: 4px 6px; }”,
“.value-right { text-align: right !important; }”
), NEWLINE(), 1)),
TABLE_HTML(table, OPT(“pref”, “custom-”),
詳細, 単価, 個数, 金額
)
)
)
)

まず html, CSS の基本的なところは、学習が必要だと思います。
基本を知らずにカスタマイズすると問題が発生したときに対処できません。

基本を押さえた前提で html の表示に関しては、ChatGPTや Gemini に聞いて試行錯誤するのがいいと思います。

1列目を50%2列目を20%3列目を10%4列目を20%で幅指定を行いたいのですが、うまくできません。

CSSで、表示指定を行います。
ChatGPT CSSで列幅指定の例

また1列目は列幅に対し文字が長い際には改行、あるいは[はみ出た文字列を「…」で表示するようにしたいと思っています。

同様に ChatGPT か Gemini を使ってみてください。

HTMLの設定をどう計算式に記載するのか、よく理解できていないので教えていただけますと幸いです。

:small_orange_diamond: 計算式にどう組み込むか?は、すでに書かれた式の中に

TAG("style", JOIN(ARRAY(
   // ←ここに CSS を列ごとに追加していく
), NEWLINE(), 1)),

ここに「列幅指定」などの CSS を行単位で追加するだけで動きます。

“どれをどこに追加すればいいか” を実際に手を動かして試してみると理解が深まります。

ありがとうございます。

氏名 役職 年齢 部署

これを計算式に落とし込む書き方がわからず・・・
rex0220 関連テーブルプラグイン テーブル表示 #kintone - Qiita
“.custom-table”.custom-table が

に該当している、ということになりますでしょうか。
“.custom-table th { background-color: #c0eefe; }”, はどこに対応するのでしょうか。
普通にHTMLやCSSの記載の方法などはネットで調べれば出てくるのですが、計算式に落とし込む際の書き方が理解できておりません。
計算式プラグインのHTML関連の関数の記載方法を理解しないとこのあたりは難しいでしょうか。

計算式プラグインのHTML関連の関数の記載方法を理解しないとこのあたりは難しいでしょうか。

サンプルの計算式をフォルトンに解説してもらい、さらに計算式の実行結果を見るとわかりやすいかもしれません。


以下は、フォルトンによる 計算式の分かりやすい解説です。
この式は テーブル値を HTML の表に変換して、CSS を適用して表示するためのものです。
使用されている関数はすべて計算式プラグインに含まれるものです(HTML 関連関数として TAGS_HTML、TAG、STYLE、TABLE_HTML など)


:sparkles: 計算式の全体像

LET(
  table, TARRAY(オプションT),
  IF(ARRAY_COUNT(table) = 0, "",
    TAGS_HTML(
      TAG("style", JOIN(ARRAY(
        ".custom-table { width: auto; table-layout: auto; border-collapse: collapse; }",
        ".custom-table th { background-color: #c0eefe; }",
        ".custom-table th, .custom-table td { white-space: nowrap; border: 1px solid darkgray; padding: 4px 6px; }",
        ".custom-table td:last-child {  white-space: initial; }",
        ".value-right { text-align: right; }"
      ), NEWLINE(), 1)),
      TABLE_HTML(table, OPT("pref", "custom-"),
        オプションT, オプション費用T
      )
    )
  )
)

:sparkles: 1. LET で変数 table を作成

table, TARRAY(オプションT)
  • TARRAY(オプションT) は、テーブル「オプションT」から
    行ごとのデータを配列で取り出す関数です。
    ➜ つまり テーブル内容を配列化して扱いやすくしています。
    (TARRAY の説明:テーブルを配列に変換する )

:sparkles: 2. テーブルが空なら空文字、それ以外なら HTML を返す

IF(ARRAY_COUNT(table) = 0, "",  …HTML生成… )
  • ARRAY_COUNT(table)=0
    → 配列(=テーブルの行)が 0 行なら何も表示しない
  • 1 行以上ある場合のみ HTML 表示を作成

:sparkles: 3. TAGS_HTML で複数の HTML 要素をまとめて返す

TAGS_HTML( …styleタグ…, …TABLE_HTML… )

TAGS_HTML
→ 複数の TAG(…) をまとめて HTML に変換する関数です

この中では

  1. スタイル(CSS)を記述した style タグ
  2. テーブル本体(TABLE_HTML)

をセットで返しています。


:sparkles: 4. CSS の組み立て

TAG("style",
  JOIN(ARRAY(
    ".custom-table { ... }",
    ".custom-table th { ... }",
    ".custom-table th, .custom-table td { ... }",
    ".custom-table td:last-child { ... }",
    ".value-right { text-align: right; }"
  ), NEWLINE(), 1)
)

:play_button: 何をしているのか?

  • CSS の 5 行を ARRAY で作成
  • JOIN()NEWLINE() により改行付きの 1 つの文字列にまとめる(JOIN の説明:配列を区切り文字で文字列化 )
  • その文字列を style タグ内に配置する

:play_button: どのような CSS が作られる?

  • .custom-table というクラスを持つ表に対するデザイン
  • ヘッダー行の背景色
  • 枠線
  • 右寄せ用クラス .value-right

:sparkles: 5. TABLE_HTML による HTML テーブル作成

TABLE_HTML(table, OPT("pref", "custom-"),
  オプションT, オプション費用T
)

TABLE_HTML の役割

  • テーブル配列(table)を HTML の <table> 形式に変換する
  • OPT("pref", "custom-") を指定しているので
    生成される class 名は “custom-〇〇” の形になる

例:

<table class="custom-table">

オプション指定により、

  • 「オプションT」
  • 「オプション費用T」
    の項目がどのように表として出力されるかを制御します。

:sparkles: 全体がやっていることのまとめ

この計算式は以下のことを自動で行います:

  1. テーブル(オプションT)を配列として取得

  2. 行が 0 の場合は空

  3. 行がある場合:

    • CSS を生成し <style> タグを作成
    • TABLE_HTML でテーブルを HTML 化
  4. これらを TAGS_HTML でまとめて返す

最終的にレスポンシブで見やすい独自デザインの
HTML テーブルをスペース欄に表示できる仕組みです。


:magnifying_glass_tilted_left: もっと細かく知りたい箇所はありますか?

たとえば:

  • TABLE_HTML の詳しいオプション
  • CSS の追加方法
  • テーブル行ごとに色を変える方法
  • total(合計行)を追加する方法

など、用途にあわせて最適な説明や改善案を作成します。


計算式ルールで、計算式を実行

集計元のアプリで計算式ツールを使うと、計算式を実行できます。
html の文字列として、style タグと、table タグが作成されます。

計算結果(文字列を見やすくフォーマットしています)

style タグとオプションTテーブルの3行分が変換されています。

<style>
    .custom-table {
        width: auto;
        table-layout: auto;
        border-collapse: collapse;
    }

    .custom-table th {
        background-color: #c0eefe;
    }

    .custom-table th,
    .custom-table td {
        white-space: nowrap;
        border: 1px solid darkgray;
        padding: 4px 6px;
    }

    .custom-table td:last-child {
        white-space: initial;
    }

    .value-right {
        text-align: right;
    }
</style>
<table class="custom-table">
    <thead class="custom-head">
        <tr class="custom-header-row">
            <th class="custom-th-label">オプションT</th>
            <th class="custom-th-label">オプション費用T</th>
        </tr>
    </thead>
    <tbody class="custom-body">
        <tr class="custom-row">
            <td class="custom-td-value">X</td>
            <td class="custom-td-value value-right">1,000</td>
        </tr>
        <tr class="custom-row">
            <td class="custom-td-value">Y</td>
            <td class="custom-td-value value-right">2,000</td>
        </tr>
        <tr class="custom-row">
            <td class="custom-td-value">Z</td>
            <td class="custom-td-value value-right">3,000</td>
        </tr>
    </tbody>
</table>
「いいね!」 1

ありがとうございます!
フォルトン活用して、勉強します!

いつも本当にありがとうございます:woman_bowing:t4:

このトピックは最後の返信から 60 分が経過したので自動的にクローズされました。新たに返信することはできません。