無趣味の戯言

💌

メッセージ表示プラグインを作成しました

こんにちは、だいちゃんです。

kintoneで、レコードを追加したときに、お礼などのメッセージを表示できるプラグインを作成しました。

実はkintoneプラグイン処女作です///

レコード登録時メッセージ表示プラグイン | udcstore

レコード登録時メッセージ表示プラグイン

レコード新規追加の保存成功時に、任意のメッセージを表示することができるプラグインです。

毎回同じメッセージを表示することもできるほか、出現タイミングごとに5つのパターンのメッセージを保存できるので、そのユーザーが登録したレコード数に応じてメッセージを変えることもできます。

メッセージの出現タイミングは、レコードを新規追加したユーザーが作成者となっているレコード数を条件に、1/2/3/5/10/20/30/40/50回目の登録時、または、毎回、10回ごとに表示するといった設定が可能です。

メッセージの内容に加えて、メッセージ上部に表示される絵文字もパターンごとに保存できます。

ユースケースなどの詳細は note にも書いたので、そちらもご覧ください。

ロジック

レコードの保存に成功したときのイベントをトリガーに、プラグインの設定情報を読みにいきます。同時に、イベントオブジェクトから作成者を取得、同アプリ内で絞り込み検索し、今回保存を行ったユーザーが作成者になっているレコード数を調べます。

該当ユーザーの作成したレコード数が判明したら、プラグインの設定値を総ナメし、1回目、5回目など回数指定の設定があれば、今回のレコード数と合致するかを調べます。合致するものがあれば、その設定値で指定したメッセージを表示します。

※ 同じタイミングが複数設定されている場合(例えば1回目が2つ設定されているなど)、下の設定が優先されるはず...

合致するものがなければ、設定値に「10回ごと」の設定があるかをチェックし、あればメッセージを表示します。

最後に、「毎回」表示する設定があるかを確認し、あればそのメッセージを表示し、なければ何も表示しません。

ハマりポイント

初のプラグイン作成だったので、ハマりポイントは多々ありましたが、その中でも特徴的なところをまとめておきます。

kintone UI Component v1.4.0 以降は kucs オブジェクトを使う

kintone UI Component v1.4.0以降では、コンポートの呼び出し方法が変わっています。


let dropdown = new Kucs['1.13.0'].Dropdown({

});

ずっと kuc オブジェクトを参照しようとして、そんなもんねぇよ!って怒られ続けていました。

しかも、サンプルコードなどにあるように、定数 kuc に Kucsオブジェクトを代入する方法だとなんかうまく行きませんでした。それは未だに謎。

kintone.plugin.app.setConfig(); にオブジェクトは格納できない

入れさせてくれ~!

以下のように、配列を文字列変換して格納するという荒業に出ました。呼び出すたびにsplitで配列に戻してます。悲しい。

{"-1": "[1, 🎉, レコードの登録、ありがとうございました]"},
{"1": "[2, 🎊, 初のレコードの登録です!これからもよろしくお願いします!]"}

※ キー部分が出現タイミングを表しています。-1 は「毎回」を意味し、整数の場合は、メッセージを表示するレコード数です。

作成者での絞り込みは in、inのときは ( ) を使う

const creatorFieldCode = '作成者'; // 実際はevent.recordから取得して代入
const creatorName = 'ログイン名'; // 実際はevent.recordから取得して代入
const body = {
    app: kintone.app.getId(),
    fields: [creatorFieldCode],
    query: `${creatorFieldCode} in ("${creatorName}")`,
    totalCount: true
};

const response = await kintone.api(kintone.api.url('/k/v1/records.json', false), 'GET', body);
const recordCount = response.totalCount;

body内の query を作るときにハマったポイントです。

見出しの通り、作成者フィールドではin演算子を使わないといけなくて、in演算子は値が1つでも括弧で囲わないといけないみたいです。また、値はダブルクォーテーションで囲う必要があるみたいです。絶対にダブルクォーテーション。

ドキュメントにもサラッと書いてあるけどしっかりハマりました。


初のkintoneプラグイン作成にしては、そこそこいい感じに作れたんじゃないかと思ってます。

ちょっと詰めが甘いかなって気がしてる部分もありますが、今回の経験を活かして、プラグイン作成も本格化させていこうと思います!


以下のインタビュー記事を読んで、業務アプリに楽しさやワクワク感を詰め込めないかな、と思ったことがきっかけで作ってみました。

【Misskey開発者syuilo氏】「楽しんでほしい」ピュアな思いがMisskeyを生んだ。異様な熱狂を放つSNSの今までとこれから | レバテックラボ(レバテックLAB)

日常業務の中だからこそ、ウザくない程度にお礼や感謝を伝える仕組み、ほしいですよね。

Buy Me A Coffee