新規投稿
フォローする

N:N(複数対複数)の関連レコード一覧を自作するについて

N:N(複数対複数)の関連レコード一覧を自作するを参考にして

参照元がサブテーブルで1レコードに複数データがある場合を作成したいのですが、

どうしてもサブテーブル内が取得できません。

ご教授頂けないでしょうか?

https://developer.cybozu.io/hc/ja/articles/360000528186-N-N-%E8%A4%87%E6%95%B0%E5%AF%BE%E8%A4%87%E6%95%B0-%E3%81%AE%E9%96%A2%E9%80%A3%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E4%B8%80%E8%A6%A7%E3%82%92%E8%87%AA%E4%BD%9C%E3%81%99%E3%82%8B 

参照元アプリID:1895

表示したいサブテーブルのフィールド:task_from(開始日)、task_to(終了日)

サブテーブルも行数なのでもう1個forが必要だと思いますが、どのように記述すれば良いかわからないのでご教授頂けたらと思います。

/*
* N:N(複数対複数)の関連レコード一覧を自作する
* Copyright (c) 2018 Cybozu
*
* Licensed under the MIT License
*/
(function() {
'use strict';
kintone.events.on(['app.record.detail.show', 'app.record.edit.show'], function(event) {
var record = event.record;
// 増殖バグ回避
if (document.getElementById('duties_list') !== null) {
return event;
}
// To HTML escape
function escapeHtml(str) {
return str
.replace(/&/g, '&')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&#39;');
}
// スペースを取得
var subtableSpace = kintone.app.record.getSpaceElement('duties_list');
// Rest API
var params = {
'app': 1895,
'query': '下請先CD in ("' + record.下請先CD.value + '") order by レコード番号 asc limit 500',
'fields': ['$id','task_from', 'task_to']
};
kintone.api('/k/v1/records', 'GET', params).then(function(resp) {
// success
var tableRecords = resp.records;
var dutiesTable = '<table class="kintoneplugin-table">';
dutiesTable += '<thead>';
dutiesTable += '<tr>';
dutiesTable += '<th class="kintoneplugin-table-th" style="width: 250px;">';
dutiesTable += '<span class="title">';
dutiesTable += '開始日';
dutiesTable += '</span>';
dutiesTable += '</th>';
dutiesTable += '<th class="kintoneplugin-table-th" style="width: 250px;">';
dutiesTable += '<span class="title">';
dutiesTable += '終了日';
dutiesTable += '</span>';
dutiesTable += '</th>';
dutiesTable += '</tr>';
dutiesTable += '</thead>';
dutiesTable += '<tbody>';
for (var i = 0; i < tableRecords.length; i++) {
dutiesTable += '<tr>';
dutiesTable += '<td>';
dutiesTable += '<div class="kintoneplugin-table-td-control">';
dutiesTable += '<a href="/k/1895/show#record=' + escapeHtml(tableRecords[i].$id.value);
dutiesTable += '" target="_blank">';
dutiesTable += escapeHtml(tableRecords[i].task_from.value);
dutiesTable += '</a>';
dutiesTable += '</div>';
dutiesTable += '</td>';
dutiesTable += '<td>';
dutiesTable += '<div class="kintoneplugin-table-td-control">';
dutiesTable += escapeHtml(tableRecords[i].task_to.value);
dutiesTable += '</div>';
dutiesTable += '</td>';
dutiesTable += '</tr>';
}
dutiesTable += '</tbody>';
dutiesTable += '</table>';
subtableSpace.innerHTML = dutiesTable;
}, function(error) {
// error:エラーの場合はメッセージを表示する
var errmsg = 'レコード取得時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (typeof error.message !== 'undefined') {
errmsg += '\n' + error.message;
}
subtableSpace.appendChild(document.createTextNode(errmsg));
});
return event;
});
})();

 

 

0

0件のコメント

ログインしてコメントを残してください。