kintone プラグインについて

お世話になっております。

プラグインの作成についての質問です。

現在すべてのアプリにjavascriptを入れているのでプラグイン化をしたいため質問させていただきます。

プラグインの設定画面で入力した値をdetail画面やedit画面に使いたいのですが、どうしたら使えるようになるでしょうか。

|

var config = {

|
|   |

'key1': 'value1',

|
|   |

'key2': 'value2'

|
|   |

};

|
|   |

kintone.plugin.app.setConfig(config);

|

こちらで値をセットして他の画面でgetすれば使えるようになるのでしょうか?

プラグインの作成が初めてなのでよろしくお願いいたします。

ishikawayuito 様

こんにちは。

jQuery.noConflict();
(function ($, PLUGIN_ID) {
'use strict';
let config = kintone.plugin.app.getConfig(PLUGIN_ID);
console.log(config); // {'key1': 'value1','key2': 'value2'}
})(jQuery, kintone.$PLUGIN_ID);

こんな感じだったかと思います。

間違えてたらごめんなさい。

新屋 育男

設定画面で{key1 : value1}を定義してsetConfig;

詳細画面でgetConfig(PLUGIN_ID)で取得の認識でよろしいでしょうか。

またfunctionでPLUGIN_IDを渡しているのでPLUGIN_IDで識別を行っていると思いますがsetの際のPLUGIN_IDはどのようにすればよいでしょうか。

よろしくお願いいたします。

 

ishikawayuito 様

おおよそその認識で大丈夫かと思います。

 

PLUGIN_IDは、プラグイン内で自動で作成されます。

プラグインから動作するソースコードの引数に、PLUGIN_IDを指定すると自動でプラグインIDを保持しています。

おそらくプラグインから実行するときに、グローバルにPLUGIN_ID(オブジェクト)が存在しているからかと思います。

ちなみにプラグインのIDの簡単な確認の方法ですが、対象のプラグインの設定画面URLのクエリに、

?pluginId= 

となっている部分がありますが、その = から後ろに記載されている部分がPLUGIN_IDの変数に格納している値です。

kintone プラグインJavaScript API – cybozu developer network

プラグイン開発 – cybozu developer network

この辺りが参考になると思います。

セット時は、jQuery.noConflict() を使用しないで記述すると、

(function (PLUGIN\_ID) {
'use strict';
 letconfig ={'key1': 'value1','key2': 'value2'}
kintone.plugin.app.setConfig(config);
})(kintone.$PLUGIN_ID);

これで、値はセットされいます。

特に、プラグインIDは意識しなくても大丈夫です。

新屋 育男様

ご回答、参考ページ記載ありがとうございます。

アドバイスを基にプラグインの作成頑張ります。

何かわからないことがあればまた質問をさせていただくことがあると思いますので

その際はよろしくお願いいたします。

新屋 育男様

すみません。不明点がでたので質問をさせていただきます。

現在開発中のもので設定画面が作成完了し、動作しているのですが、

detail画面でも設定画面のjsが動いてしまっている状態です。

どう制御したらよいかなにかわかることがあれば教えていただきたいです。

functionの入りはこのように記載しております。

(function(PLUGIN_ID) {
"use strict";
   document.getElementById('save-button').addEventListener('click', function(){

エラー情報

Uncaught TypeError: Cannot read properties of null (reading ‘addEventListener’)

こちらのjsは動かしたくないです。functionの書き方が悪いなどアドバイスいただけると幸いです。

よろしくお願いいたします。

申し訳ございません。自己解決いたしました。

manifest.jsの定義の問題でした。