サブテーブル内の数値フィールドのフィールド名を、別フィールドの値で表示したいのですが。。

文章で説明するのが難しいのですが、サブテーブルのフィールド名を、ドロップダウンで選んだ値で表示したいと希望を持っております。

そもそもそんな事が可能なのかどうかも分かっておりません。。

以前「JSEdit for kintone で、テーブルのフィールド名(ヘッダーの文言)を改行したい」で、ご教示いただいたスクリプトから、何か出来ないか考えてはみたものの、まったく判る訳もなく途方に暮れております。

どなたか同じような問題を解決なさっている方はいらっしゃいませんでしょうか。

そもそも、このテーブルの行列を逆にして、テーブルに名前のフィールドを入れ、日付を1~31日固定でフィール名にすればいいではないか、とも考えたのですが、そうすると自動計算の曜日をテーブル内に入れられず、また、同じテーブルの行には文字列複数行のフィールドもあるので、テーブルがとてつもなく横長となって行き詰まり、、、現在のテーブルとなっております。。

豊和会 本部さん

度々こんにちは。

 

標準機能では難しいですね。

各列名の上に文字列1行を並べて、自動計算で氏名を参照することも考えましたが、行列入替があるのでボツですね。

 

いきなり全てのコードを提示するのは好ましくないので

以下に沿って、順にコードに落とし込んでいただければと思います。

①列番号と氏名フィールドコードの組合せを連想配列で作ります。

// 列番号: フィールドコード(0番から数える)
const FIELD_DICT = {
  2: '氏名A',
  3: '氏名B',
  4: '氏名C'
}

 

②サブテーブルのヘッダー要素<th>を取得します。

<th>要素には「.subtable-label-gaia」が付いていますので、これをもとに取得します。

const th = document.querySelectorAll('.subtable-label-gaia');

 

③取得した<th>配列をループ処理します。

この時、if文でFIELD_DICTにKEYが存在するかをチェックします。

存在する場合、<th>配下の<span>のテキスト(textContent)を氏名フィールドのvalueに書き換えます。

氏名フィールドは、FIELD_DICTから列番号に該当するフィールドコードを参照します。

for (let i = 0; i < th.length; i++) {
if (FIELD_DICT[i]) {
  th[i].querySelector('span').textContent = record[FIELD_DICT[i]].value;
}
}

 

– ここまでを関数にします –

 

④関数をどこで呼び出すか。

追加画面表示時、編集画面表示時、氏名フィールド変更時、詳細画面表示時

 

ほぼ答えみたくなってしまいましたが、以上をもとにコードを組んでみてください。

koichiさん

いつも大変お世話になっております。早速ながらに、ありがとうございます!

教えて頂いた内容で、チャレンジしてみます。 出来ても、出来なくても、また返信致しますが、返信までに時間がかかるかも知れません、、、すみません。

いつもありがとうございます。