kintone의 테이블을 찾아 보았습니다.

소개



kintone의 테이블은 표준 기능으로는 조회로 올 수 없습니다 (;^ν^)구누누…
하지만 테이블도 살짝 가져오고 싶을 때가 있습니다! ! !

그래서 kintone REST API를 사용하여 의사 룩업 확장해 보았습니다.

완성 이미지




※룩업 클리어가 뭔가 남아 있지만,,(゚ε゚)키니시나이!!
※↑ 나중에 이유를 설명합니다

메커니즘



룩업을 했을 때, 즉 「룩업 필드가 바뀌었을 때」나 「룩업의 취득 버튼을 눌렀을 때」라고 하는 이벤트가 있으면 아무런 제작도 없습니다만,
둘 다 이벤트가 준비되어 있지 않기 때문에, 「룩업으로 가져온 필드의 체인지 이벤트」로 처리를 발화시키고 있습니다 🔥🔥

여기의 이벤트를 원해! ! (없는 것들)


룩업원(마스터 앱)의 앱 ID를 취득하는 API는 있으므로, 룩업의 표준 기능으로 어느 레코드 ID로부터 룩업해 왔는지 취득해 REST API의 GET를 실행하고 있습니다.
※ 그리고 이 「레코드 ID 격납용 필드」의 체인지 이벤트로 🔥하고 있습니다

kintone 앱



필드 구성




필드
필드 코드
용도


조회
Lookup
조회하기 위해

수치
Number
조회 원본 레코드 ID 저장

테이블

가져오고 싶은 테이블


※ 테이블의 구성, 필드 코드는 룩업원/처에서 동일하게 해 주십시오. 나중에 편합니다.

기타 필요한 필드가 있으면 자유롭게 배치하십시오.

필드 배치



배치가 수수하게 소중하거나 합니다!

룩업으로 가져오는 필드는 위에서 (왼쪽 위)에서 차례로 취득하는 것 같고,
레코드 ID를 저장하는 필드를 위로 가져오면 조금 버그합니다.

change 이벤트를 연결하고 있다 レコードIDフィールド 에 먼저 값이 들어 버리므로 커스터마이즈가 움직여 버려, 다른 필드에는 값이 들어가지 않습니다.
-> 다시, 취득 버튼을 누르면, 다른 필드에도 값이 들어갑니다.



코드 안에 있는 kintone.app.record.set() 가 원인인 것 같네요~(감)

그래서 체인지 이벤트 시키고 있는 레코드 ID 필드를 맨 아래에 가져오면 잘 할 수 있게 됩니다.



※룩 클리어가 남는 녀석도 어떻게든 되고 있다

코드



GitHub 에 있습니다.
(function() {
  'use strict';
  const events = [
    'app.record.create.change.Number',
    'app.record.edit.change.Number',
  ];
  kintone.events.on(events, function(event) {
    const targetAppId = kintone.app.getLookupTargetAppId('Lookup');
    const targetRecordId = event.record['Number'].value;

    // ルックアップクリアをしたらテーブルを空にする
    if (!targetRecordId) {
      event.record['Table'].value = [];
      return event;
    }

    const body = {
      app: targetAppId,
      id: targetRecordId,
    };
    kintone.api(kintone.api.url('/k/v1/record', true), 'GET', body, function(resp) {
      event.record['Table'].value = resp.record['Table'].value;

      // サブテーブルを編集不可にする場合
      event.record['Table'].value.forEach(function(obj) {
        Object.keys(obj.value).forEach(function(params) {
          obj.value[params].disabled = true;
        });
      });

      kintone.app.record.set(event);
    }, function(err) {
      window.alert('REST APIでエラーが発生しました');
    });
  });
})();

룩업 클리어 시키면 테이블을 비우는 처리이거나, 서브 테이블을 편집 불가로 하거나 하고 있습니다.

또, 테이블의 구성이나 필드 코드를 맞추는 것으로,
event.record['Table'].value = resp.record['Table'].value

에 테이블이 부드럽게 가지고 이것입니다. 오라 라쿠 친

결론



간단한 커스터마이즈라도 가능한 한 Qiita에 올리려고 생각해 보았습니다.
테이블의 룩업은 수수함에 요구가 있기 때문에 언젠가 표준 대응해 주면 좋겠다~
(그렇게 되면 이 커스터마이즈는 창고입니다만 웃음)

kintone의 커스터마이즈로 곤란한 것이 있으면 cybozu developer network 의 커뮤니티에서 질문해 보면 좋겠어~!

그럼! ≧(+・` ཀ・´)≦

좋은 웹페이지 즐겨찾기