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 의 커뮤니티에서 질문해 보면 좋겠어~!
그럼! ≧(+・` ཀ・´)≦
Reference
이 문제에 관하여(kintone의 테이블을 찾아 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/RyBB/items/8798062cd84b32e59e0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
※룩업 클리어가 뭔가 남아 있지만,,(゚ε゚)키니시나이!!
※↑ 나중에 이유를 설명합니다
메커니즘
룩업을 했을 때, 즉 「룩업 필드가 바뀌었을 때」나 「룩업의 취득 버튼을 눌렀을 때」라고 하는 이벤트가 있으면 아무런 제작도 없습니다만,
둘 다 이벤트가 준비되어 있지 않기 때문에, 「룩업으로 가져온 필드의 체인지 이벤트」로 처리를 발화시키고 있습니다 🔥🔥
여기의 이벤트를 원해! ! (없는 것들)
룩업원(마스터 앱)의 앱 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 의 커뮤니티에서 질문해 보면 좋겠어~!
그럼! ≧(+・` ཀ・´)≦
Reference
이 문제에 관하여(kintone의 테이블을 찾아 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/RyBB/items/8798062cd84b32e59e0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
필드 구성
필드
필드 코드
용도
조회
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 의 커뮤니티에서 질문해 보면 좋겠어~!
그럼! ≧(+・` ཀ・´)≦
Reference
이 문제에 관하여(kintone의 테이블을 찾아 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/RyBB/items/8798062cd84b32e59e0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(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 의 커뮤니티에서 질문해 보면 좋겠어~!
그럼! ≧(+・` ཀ・´)≦
Reference
이 문제에 관하여(kintone의 테이블을 찾아 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyBB/items/8798062cd84b32e59e0e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)