setConfigとgetConfig
にメンテナンス済み
kintone プラグインには、設定情報を保存・取得するための API が用意されています。
kintone.plugin.app.setConfig(config, callback): 設定画面で設定を保存するkintone.plugin.app.getConfig(pluginId): 保存した設定を取得する(設定画面・アプリの画面どちらでも使える)
pluginId には、プラグイン内で参照できる kintone.$PLUGIN_ID を渡します。
保存できるのは「文字列のみ」
保存する情報は、キーも値も文字列のオブジェクトである必要があります。
APIで保存される情報
type PluginConfig = {
[key: string]: string;
};
数値・真偽値・配列・オブジェクトをそのまま値に入れて保存することはできません。
推奨されるオブジェクト構造
プラグインの設定は、できるだけ階層を浅く、フラットな構造にすることが推奨されています。
とはいえ、複数行の設定を持つプラグインなど、配列やネストを避けられないケースは珍しくありません。
配列で保存したい設定情報
{
settings: [
{ config1: 'value', config2: 'value' },
{ config1: 'value', config2: 'value' },
// ...
]
}
この場合は、プロパティごとに JSON.stringify して保存し、取得時に JSON.parse で復元します。
複雑な構造の設定情報を保存する
const config = {
settings: [
{ config1: 'value', config2: 'value' },
{ config1: 'value', config2: 'value' },
],
};
const configForSave = {
settings: JSON.stringify(config.settings),
};
kintone.plugin.app.setConfig(configForSave);
変換を毎回書くのは手間で、書き忘れるとデータ破損の原因にもなるため、共通の関数にまとめておくと便利です。
設定を取得する関数
/**
* プラグインがアプリ単位で保存している設定情報を返却します
*/
const restoreStorage = (id) => {
const config = kintone.plugin.app.getConfig(id);
return Object.fromEntries(
Object.entries(config).map(([key, value]) => {
try {
return [key, JSON.parse(value)];
} catch {
// JSON として解釈できない値は文字列のまま返す("123" など JSON として有効な文字列は数値等に変換されます)
return [key, value];
}
})
);
};
// 使用例
const config = restoreStorage(kintone.$PLUGIN_ID);
設定が未保存の場合、getConfig は空のオブジェクトを返すため、config.settings は undefined になります。使う側で既定値を用意してください。
設定を保存する関数
保存は設定画面で行うのが一般的です。
/**
* アプリにプラグインの設定情報を保存します
*/
const storeStorage = (target, callback) => {
const converted = Object.fromEntries(
Object.entries(target).map(([key, value]) => [key, JSON.stringify(value ?? null)])
);
kintone.plugin.app.setConfig(converted, callback);
};
// 使用例
storeStorage({ settings: [{ config1: 'a', config2: 'b' }] }, () => {
// 保存完了後の処理
history.back();
});
setConfig の注意点
setConfigは設定を丸ごと置き換えます。一部のキーだけを渡すと、渡さなかったキーは消えます。更新時は一度getConfigで取得し、変更後の全体を保存してください。- 第 2 引数のコールバックを省略すると、保存後にアプリの設定画面(プラグイン一覧)へ自動で遷移します。保存後に別の処理をしたい場合はコールバックを指定します。
- 保存できるサイズには上限があります。大量のデータは、プラグインの設定ではなくアプリのレコードに保存することを検討してください。
まとめ
- プラグインの設定は文字列のみ保存できる
- 配列やオブジェクトは
JSON.stringify/JSON.parseで変換する - 変換処理は
restoreStorage/storeStorageのような共通関数にまとめる setConfigは上書き保存なので、更新時は全体を保存し直す
#JavaScript
#kintone