kintoneでサブテーブルのフィールドを隠す方法ができたよ【2020年6月アップデートAPI】

ブログを書くのもお勉強。と思ってみるといよいよ楽しくなってきた大門です。

正式名称はテーブル。でもサブな感じだからサブテーブルでおなじみのkintoneのテーブルについてAPIのアップデートです。

setFieldShown APIでテーブル内のフィールドも非表示にすることが可能に

(先に言っちゃいますが権限制御もできたらいいな。)

同月のアップデートで一覧設定の変更APIがAPIトークン認証に対応したことについては、最近のAPIトークン認証に関わるアップデートの続編という受け止めまでとして端折ります。

今回アップデートされた setFieldShown() は、kintoneのレコード詳細画面で指定したフィールド(項目)をパッと隠したりほらよっと表示したりを自由自在に操れるマジシャンみたいなやつです。 が、残念ながら

以下のフィールドは非表示にできません。
・ラベル
罫線スペース
テーブル内のフィールド

でした。

「条件によってフィールドの表示/非表示を切り替えたい」というときの回答である setFieldShown() ですが、「テーブル内のフィールド」が隠せないというのはなんとも歯がゆい制限でした。

できていたこと。

kintone.events.on([
  'app.record.detail.show',
  'app.record.create.show',
  'app.record.edit.show'
], function(event) {
  var record = event.record;
  var is試験完了 = record.ステータス.value === '試験完了';
  //試験が終わればレコードの「答え1」を見せてオッケー
  kintone.app.record.setFieldShown('答え1', is試験完了);
  //試験が終わればレコードの「答え2」を見せてオッケー
  kintone.app.record.setFieldShown('答え2', is試験完了);
  //試験が終わればレコードの「答え3」を見せてオッケー
  kintone.app.record.setFieldShown('答え3', is試験完了);
  return event;
});

できるようになったこと ≒ できなかったこと。

kintone.events.on([
  'app.record.detail.show',
  'app.record.create.show',
  'app.record.edit.show'
], function(event) {
  var record = event.record;
  var is試験完了 = record.ステータス.value === '試験完了';
  //試験が終われば「テーブルの各行の答え」を見せてオッケー
  kintone.app.record.setFieldShown('回答テーブル__答え', is試験完了);
  return event;
});

それでもやっぱりできないこと ≒ほんとはやりたかったりすること。

kintone.events.on([
'app.record.detail.show',
'app.record.create.show',
'app.record.edit.show'
], function(event) {
  var record = event.record;
  var is添削済;
  //添削済みの行は答えを見せてオッケー
  event.record.回答テーブル.value.forEach(function(row, rowIndex) {
    is添削済 = row.value.添削ステータス.value === '添削済';
    kintone.app.record.setFieldShown('回答テーブル__答え', is添削済, rowIndex);
    //※こんな使い方はありません。
  });
  return event;
});

これまでどうしていたか ≒ どうしてもやりたいときは。

  • ・見なかったことにしてもらう
  • ・DOM操作で無理やり消す(自己責任カスタマイズ)
kintone.events.on([
  'app.record.detail.show',
  'app.record.create.show',
  'app.record.edit.show'
], function(event) {
  var record = event.record;
  if (record.ステータス.value === '試験完了') {
    //回答テーブルの答えフィールドたち(っていうか列)のDOM要素を取得
    getTableFieldElements('回答テーブル', '回答テーブル__答え').then(function(answerElements) {
      $(answerElements).hide();
    }).catch(function(error) {
      alert('大失敗');
    });
    //みたいな処理を用意しなければいけなかったし、kintone非推奨。
  }
  return event;
});

とはいえ。

setFieldShown()がテーブルに対応したのは、テーブル周辺のアップデートとしてはまた一歩前進といった印象です。 続編があることを期待してしまいますね。

余計なカスタマイズをしなくて良い == kintoneをより活かしたカスタマイズができるようになる

そゆことです。

ジョイゾーのシステム39ならkintoneの持ち味を余すところなく活かして、もっとステキな業務改善をご提案できますよ〜。

同じカテゴリーの記事