テンプレート文を文字列にコピーしたい

お世話になっております。
初めてのトピック作成なので、不備がありましたら申し訳ありません。

実現したい事としましては以下の通りになります。>

①Aというアプリ内でドロップダウンA´を選択。
②B(別アプリ)に登録した定型文をAアプリ内の文字列(複数行)にコピー
③コピーした文章には追記が可能

こちらになります。

参考にしたものは以下の通りになります。

kintoneにテンプレート選択&挿入機能を追加するJavaScript

こちらのサイトから参考にしたコードは以下のものです。

jQuery.noConflict();
(function($) {
“use strict”;
var events={
show:[
‘app.record.edit.show’,‘mobile.app.record.edit.show’,
‘app.record.create.show’,‘mobile.app.record.create.show’
]
};
kintone.events.on(events.show, function(event) {
// app アプリID
// query レコード抽出条件
var param = {
“app”: 99,
“query”: “status in ("有効") order by tid asc”
};
kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, param, function(resp) {
// 成功時の処理
//console.log(resp);
const records = resp.records;
//Create and append select list
var selectList = document.createElement(“select”);
selectList.id = “mySelect”;
kintone.app.record.getSpaceElement(‘space1’).appendChild(selectList);
//Create and append the options
for (var i = 0; i < records.length; i++) {
var option = document.createElement(“option”);
option.value = i;
option.text = records[i].name.value;
selectList.appendChild(option);
}
// 任意のスペースフィールドにボタンを設置
var mySpaceFieldButton = document.createElement(‘button’);
mySpaceFieldButton.id = ‘my_space_field_button’;
mySpaceFieldButton.innerText = ‘テンプレートを挿入’;
mySpaceFieldButton.onclick = function () {
//テキストエリアと挿入する文字列を取得
var areas = document.getElementsByTagName(‘textarea’);
var area = areas[0];
var selected = document.getElementById(“mySelect”);
var selectedValue = selected.value;
var text = records[selectedValue].text.value;
//カーソルの位置を基準に前後を分割して、その間に文字列を挿入
area.value = area.value.substr(0, area.selectionStart)
+ text
+ area.value.substr(area.selectionStart);
};
kintone.app.record.getSpaceElement(‘space1’).appendChild(mySpaceFieldButton);

   }, function(error) {
       // エラー時の処理
       console.log(error);
   });

});
})(jQuery);

14行目のアプリIDのみ伏せております。
スペースを使ってテンプレート挿入ボタンを作るというスクリプトになるようですが、同じようなやり方をしましたが上手く機能しませんでした。
同じ内容で別トピで自己解決された方がいたようですが、

kintoneにテンプレート選択&挿入機能を追加するJavaScript

恥ずかしながら技術がなく、開発者ツールをどのように参考にすれば良いのか分からないため、手詰まりになっております…。

また以下のプラグインも試してみました。

項目選択フィールド連動各種設定プラグイン

条件分岐処理プラグイン

どちらも、想定していた機能ではなくただ、私のリサーチ不足もあるとは思われますが想定しているようなものが見つけられず、こちらに質問いたしました。

ぜひご教示いただけましたら幸いです。
よろしくお願いいたします。

色々試したのであれば、試したコードの提示や、わからない箇所など部分的に質問があるほうが回答集りやすいかと思います!

1 Like

mura様

ご指摘いただきありがとうございます。
いくつか追記いたしました。

時間経っていまいましたがこちらは解決しましたでしょうか?

デバッグについては上記にまとまってるので是非ためしてみてください。
まずはコンソールにエラーがでてないかをみてみるといいかとおもいます。


また、コードですがインデントが潰れてしまっているので、コードブロック(エディタの </> みたいな記号 or ``` ←バッククォートでくくるとちゃんとコピーできるので次からためしてみてください(現在は引用になってそう)

jQuery.noConflict();
(function($) {
    "use strict";
    var events = {
        show: ['app.record.edit.show', 'mobile.app.record.edit.show', 'app.record.create.show', 'mobile.app.record.create.show']
    };
    kintone.events.on(events.show, function(event) {
        // app アプリID
        // query レコード抽出条件
        var param = {
            app: 99,
            query: 'status in ("有効") order by tid asc'
        };
        kintone.api(kintone.api.url('/k/v1/records', true), 'GET', param, function(resp) {
            // 成功時の処理
            const records = resp.records;
            // Create and append select list
            var selectList = document.createElement("select");
            selectList.id = "mySelect";
            kintone.app.record.getSpaceElement('space1').appendChild(selectList);
            // Create and append the options
            for (var i = 0; i < records.length; i++) {
                var option = document.createElement("option");
                option.value = i;
                option.text = records[i].name.value;
                selectList.appendChild(option);
            }
            // 任意のスペースフィールドにボタンを設置
            var mySpaceFieldButton = document.createElement('button');
            mySpaceFieldButton.id = 'my_space_field_button';
            mySpaceFieldButton.innerText = 'テンプレートを挿入';
            mySpaceFieldButton.onclick = function() {
                // テキストエリアと挿入する文字列を取得
                var areas = document.getElementsByTagName('textarea');
                var area = areas[0];
                var selected = document.getElementById("mySelect");
                var selectedValue = selected.value;
                var text = records[selectedValue].text.value;
                // カーソルの位置を基準に前後を分割して、その間に文字列を挿入
                area.value = area.value.substr(0, area.selectionStart) + text + area.value.substr(area.selectionStart);
            };
            kintone.app.record.getSpaceElement('space1').appendChild(mySpaceFieldButton);
        }, function(error) {
            // エラー時の処理
            console.log(error);
        });
    });
})(jQuery);
1 Like

mura様

返信ありがとうございます。
コードについてもご指摘いただきましてありがとうございます…見にくくて申し訳ありません…。

質問についてですが、色々方法がないか探してみたところ自己解決いたしました。
ルックアップ動的絞り込みプラグインと、ルックアップコピー項目編集プラグインを活用して思っていた機能と同じものを作ることができました。

質問方法なども、ご教示いただきましてありがとうございました。

1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。