新規投稿
フォローする

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

kintoneのアプリにて「複数行」のフィールドにテンプレート機能を作成したいと思い
下記サイトを参考にjsを導入してみたのですが上手く動きませんでした。

https://note.com/nagatsuma/n/n85270ba8a988

※スペースを追加したアプリにボタンが表示されない。

開発者ツールには「Failed to load resource: the server responded with a status of 520」と表示され、クリックすると下記のメッセージが表示されます。

{"code":"xxx","id":"xxxx","message":"認証に失敗しました。セッション認証には、「X-Requested-With」ヘッダーが必要です。"}

色々と調べてみたのですがjsやapiは最近始めたばかりでいまひとつわからずじまいです。
どなたかわかる方がいらっしゃいましたら糸口だけでもご教示いただけますでしょうか。

また最終的には「複数行」が複数あるアプリでも適応したいと考えております。
その点でもアドバイスをいただけると助かります。

 

追記コードは下記になります(14行目のアプリIDは併せてます。)

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);
0

4件のコメント

Avatar
あさが

こんにちは。
現状のソースコードを貼って頂いた方が、皆さんコメントしやすいかと思います。

0
Avatar
koya

あさが様。

コード追加しましたが、アプリIDしか編集していないのでリンク先のままです。

0
Avatar
あさが

koya さま

コードありがとうございます。

このコードだと該当のエラーは出なそうな気がしているのですが、こちらのスクリプト以外に別のスクリプトやプラグインが入っているという事は無いでしょうか?

あと、開発者ツールの画面キャプチャを貼って頂くともう少し分かるかもしれません。

 

過去に別の方がやり取りされていた内容がありましたが、このような点を調べて頂くのも良いかもしれません。

https://developer.cybozu.io/hc/ja/community/posts/360054652392

0
Avatar
koya

あさが様

リンクありがとうございます。開発者ツールの画面を色々調べていたら
jsファイルの文字コードに問題があったらし
プラグインからコードを呼び出しをする形に変更し自己解決いたしました。

この度は本当にありがとうございました!助かりました!

1
サインインしてコメントを残してください。