図のイメージのとおり、レコードの複数フィールドの値から生成されるハイパーリンク(WEBアドレス)を、各レコードの「報告書」のフィールドに自動で設定しようとしています。
生成したWEBアドレスを、各レコードの「報告書」のフィールドにどう入力するかが分からず、困っています。
アドバイスをいただけないでしょうか。
図のイメージのとおり、レコードの複数フィールドの値から生成されるハイパーリンク(WEBアドレス)を、各レコードの「報告書」のフィールドに自動で設定しようとしています。
生成したWEBアドレスを、各レコードの「報告書」のフィールドにどう入力するかが分からず、困っています。
アドバイスをいただけないでしょうか。
nagayama さん
報告書の項目を「リッチエディター」にして、リンクを設定すると、一覧表示でリンク表示されます。
record['リッチエディター']['value'] = '<div><a href="http:\/\/abc.com\/test">報告書</a></div>';
rex0220さん
ありがとうございます、助かります。試してみます。
rex0220さん
報告書の項目、フィールドコードを「リッチエディター」にして、下記のように書いたのですが、報告書のフィールドに何も入りません。
初歩的なことだと思いますが、どこをどう修正すればよいか、アドバイスをいただけないでしょうか。
(function () {
“use strict”;
kintone.events.on(‘app.record.index.show’, function (event) {
for (var i = 0; i < event.records.length; i++) {
var record = event.records[i];
record[‘リッチエディター’][‘value’] = ‘<div><a href=“http://abc.com/test”>報告書</a></div>’;
}
});
})();
app.record.index.show イベント処理で、record を変更しても、画面には反映されません。
例のコードは、追加・編集イベント処理を前提にしたものです。
1.フィールドコードを「リッチエディター」にするのではなく、項目の形式を「リッチエディター」に変更します。
2.フィールドコードは、「報告書」でもOKです。
3.フィールドコード「報告書」の設定は、追加・編集画面のイベント処理で行います。
4.moment.js ライブラリを使用していますので、追加してください。
参考コードです。切り貼りしただけですので、検証してください。
(function() {
"use strict";
var fcodes = ['地域', '店舗名', '日付'];
var events = ['app.record.edit.show', 'app.record.create.show', 'app.record.index.edit.show'];
fcodes.forEach(function(code) {
events.push('app.record.edit.change.' + code);
events.push('app.record.create.change.' + code);
events.push('app.record.index.edit.change.' + code);
});
kintone.events.on(events, function(event) {
var record = event.record;
record['報告書']['disabled'] = true;
if (record['地域']['value'] && record['店舗名']['value'] && record['日付']['value']) {
var link = 'http://abc.com/' + record['地域']['value'] + '/' + record['店舗名']['value'] + '/' + moment(record['日付']['value']).format('M月') + '/';
record['報告書']['value'] = '<div><a href="' + link + '">報告書</a></div>';
}
else {
record['報告書']['value'] = '';
}
return event;
});
})();
rex0220さん
ありがとうございます!
希望の機能が実装できました。とても助かりました!
追加で恐縮ですが、生成されたハイパーリンクをブラウザの別タブで開けるとなお嬉しいのですが、下記のとおりaタグの箇所に
target="_blank"をつけても、別タブで開きません。(同タブで開きます)
‘<div><a href="’ + link + ‘" target=“_blank”>報告書</a></div>’
たびたびの質問で恐縮ですが、別タブで開く方法がありましたら、アドバイスいただけないでしょうか。
リッチエディターで対応している形式しか設定できないのだと思われます。
対応としては、こんな感じで、リンククリック時に別タブで開くようにします。
(function() {
"use strict";
kintone.events.on('app.record.index.show', function(event) {
var links = document.querySelectorAll('.recordlist-cell-gaia.recordlist-editor-gaia a');
for (var i = 0; i < links.length; i++) {
links[i].onclick = function() {
window.open(this.href);
return false;
};
}
return event;
});
})();
rex0220さん
ありがとうございます。確認しました。非常に助かりました!
rex0220さん
お世話になります。
以前に本スレッドでご教示いただいた件で、最後に教えていただいたリンク先を別タブで開く件ですが、
レコード詳細画面からも別タブで開きたく、
kintone.events.on(‘app.record.index.show’, function(event) {
の箇所を、
kintone.events.on([‘app.record.index.show’, ‘app.record.detail.show’], function(event) {
このように ‘app.record.detail.show’ を追加したのですが、レコード詳細画面からは別タブで開きません。(同タブで開きます)
度々の質問で恐縮ですが、解決方法をアドバイスいただけると助かります。
詳細画面の場合は、DOMが異なりますので処理を分けて、下記で対象リンクを取得してみてください。
var links2 = document.querySelectorAll(‘span.control-value-richtext-gaia div a’);
rex0220さん
ありがとうございます。
下記でやってみましたが、別タブで開きませんでした。(同タブになります)
申し訳ありませんが、解決策をご教示いただけると幸いです。
(function () {
“use strict”;
kintone.events.on(‘app.record.detail.show’, function(event) {
var links2 = document.querySelectorAll(‘span.control-value-richtext-gaia div a’);
links2.onclick = function() {
window.open(this.href);
return false;
};
return event;
});
})();
nagayama さんのコードで試したところ、問題なく別タブで開きました。
もしかするとリッチエディター項目以外の項目ですか?
rex0220さん
ご対応ありがとうございます。
リッチエディターの項目です。
以下試してみましたが、やはりだめでした。
・先ほどの記述のJSのみにする。(他に適用していたJSを全て外す)
・新たに別のリッチエディター項目を作成する。
・他のアプリに適用してみる。
・Chorome、Edge両方ダメでした。
不思議ですね?
デベロッパーツールで、エラーを確認およびステップ実行で動作を確認してみてください。
rex0220さん
ありがとうございます。デベロッパーツールで確認してみます。
このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。