Customineによるkintoneアプリのカスタマイズでは、「〜した時」「〜する」のように、条件とやりたいことの組み合わせでカスタマイズを構築していきます。
このページは、「実現したいカスタマイズをCustomineでどのように設定すればいいか」、また「やりたいことは分かるが、それをどう設定したらいいか」といった方向けの、全般的なガイドとしてご利用ください。
アクションの実行順序
アクションの実行順序は、アクション番号とは関係がありません。
順番にアクションを実行したい場合には、条件「他のアクションの実行が完了した時」を使用します。詳しくはこちらの「アクションの実行順は決まっていますか?」にてご確認ください。
「やること」とは
「やること」には例えば「フィールドに値をセットする」や「レコードを更新または追加する」のようにレコードを追加更新するものや、「ボタンをメニュー位置に配置する」や「フィールドに吹き出しを設定する」のように見た目に関することなど、様々な「やること」があります。
他にどのような「やること」があるのかは、やることの一覧を確認してみてください。
「条件」とは
条件は例えば「追加画面・編集画面を表示した時」のような「〜した時」、更に追加の条件で例えば「フィールド値が特定の値ならば」のような条件を追加していくことで表現できます。
追加の条件はand条件ですので、指定したすべての条件に一致した時に「やること」が実行されます。また、追加の条件は上から順に判定していき、条件に一致しなければそれ以下は判定されません。
例えば、「追加画面を表示した時」の時はステータスが未作成なので「ステータスが特定の値ならば」は使えません。この時は追加の条件の一番上に「現在の画面が追加画面でないならば」を追加することでエラーが無くなります。
条件の一覧はこちらにありますのでご確認ください。
レコードとは
レコードとはkintoneアプリで取り扱うデータの1単位で、このレコードを追加 *したり編集 *していくことで、データを共有します(* サイボウズ様のサイトにリンクしています)。
Customineでは、様々なものをレコードとして取り扱うことが可能です。
レコードの取得方法
- いま開いているレコードのテーブルをレコードとして取り扱う 「テーブル行をレコードとして取得する」
- 関連レコードをレコードとして取り扱う 「関連レコード一覧の条件でレコードを取得する」
- 別アプリからレコードを取得する 「キーを指定してレコードを取得する」 など
取得したレコードは絞り込んだり、集計したり、ポップアップに表示して選択させたり、一覧表示したりすることが出来ます。
取得したレコードを絞り込み・集計・表示
- 条件によって絞り込む 「取得したレコードを絞り込む」 や「レコードから重複を除去する」 など
- 「レコード中のフィールド合計値を計算する」 など各種集計
- 「レコードの一覧をスペースに表示する」や「レコードの一覧をポップアップで表示する」などで表示
絞り込んだり、集計したり、ポップアップで表示しているだけでは、もとのレコードは何も変更されません。
集計結果をフィールドにセットしたり、絞り込んだレコードをテーブルや別アプリに書き出したりすることで、その結果が保存されます。
レコードの追加・いま開いているレコードの更新
レコードを更新する方法は、色々あります。
- いま開いているレコードを更新する 「フィールドに値をセットする」「フィールド値をまとめてセットする」
フィールドに値をセットしてレコードを更新する例として、以下のような記事を公開しておりますので、こちらも参考にしてください。
いま開いているレコード以外を操作する方法としては、例えばレコードを追加したい場合、「レコードを追加する」などがあります。
このように、いま開いているkintoneアプリでも、別のkintoneアプリでも、権限があるアプリであればどのアプリでも追加・更新が可能です。
ただし、この別のレコードを更新するときには、「主キー」という考え方が必要になってきます。
主キーとは : レコードを更新する場合に必要な考え方
主キーとは、kintoneアプリの中で、値がずっと変わらず、同じデータを必ず一意に特定できるような値(フィールド)のことです。一意に特定できれば良いので、できるだけ短いもので、また特に連番である必然性はありません(Customineのアクション番号もそのような性質を持ちます)。
こう書くと、『「レコード番号」で一意に特定できるじゃないか』と思う方もいるかもしれませんが、 レコード番号はキーにはなりません。 なぜかというと、kintone上でレコードを削除して、同じ内容のレコードを作成すると、別のレコード番号が振られます。これでは、同じレコードを一意に特定できているとは言えません。 ですので、例えばkintoneのルックアップの「コピー元のフィールド」にも、レコード番号は使ってはいけません。
顧客管理アプリを例に取ると、「会社名」「電話番号」「メールアドレス」などのフィールドは、統廃合で変わったり、重複する可能性があるのでキーにはなりえません。 これらの代わりに、ずっと変わらずに必ず一意に特定できる値、例えば「顧客ID」のようなフィールドを「必須項目にする」「値の重複を禁止する」設定で用意し、これを主キーとして利用するようにします。
主キーの発行方法について
この「顧客ID」の発行については、Customineであればマスタアプリで「自動採番を行う」などで採番してもいいですし、kintone以外で採番されているのであればそれをCSV出力して同期するなど、業務の運用に沿った方法で発行してください。
別アプリ(自アプリを含む)のレコードを更新
キーがあれば、別アプリ(自アプリを含む)のレコードを更新することが出来るようになります。 まず、いま開いているレコードのフィールドをキーとして、別のレコードを更新したいときには、以下のような「やること」を利用します。
- 必ず存在すると分かっているレコードを更新する 「レコードを更新する(キーの値をフィールドで指定)」 など
- キーに一致するレコードがあれば更新、なければ追加する 「レコードを更新または追加する(キーの値をフィールドで指定)」 など
取得したレコードをもとに、別のアプリに書き出したり、レコードを更新したいときには、以下のような「やること」を利用します。
- フィールドの値を書き換えながら追加する 「レコードを書き出す」
- 一緒にテーブルにデータをセットして追加する 「テーブルデータをセットしたレコードを追加する」
- 更新がありうる場合には 「レコードをもとに別のレコードを更新または追加する」
これらの「やること」を使って、別アプリにレコードを追加したり、特定のキーを持つレコードを更新したりすることが可能です。
kintone の各種制約について
gusuku Customine を使用する場合でも、kintone 自体の制約は考慮いただく必要があります。
詳しくは kintone のドキュメント を参照いただければと思いますが、以下に多くご質問をいただくものを抜粋して掲載します。
REST API の制限
制限内容: 1つのアプリにつき10,000件/日
主にレコード操作のカスタマイズを多く使用すると抵触する可能性があります。
対策:
- 一覧画面など、多くのユーザーが必ず利用する画面で大量のレコードを処理するカスタマイズを見直す
- 複数回取得・更新が発生する処理を作成している場合には処理を纏める、カスタマイズの発動条件を見直す、アプリの作り自体を見直す
カーソル API の制限
制限内容: 1ドメインにつき同時に10個
ポータルや一覧画面を開いた時に大量のレコードを取得するカスタマイズを作成すると抵触する可能性があります。
対策:
- 「一覧画面を表示した時」などユーザーがアクセスする都度発動する条件でカスタマイズを作成するのではなく、ボタンを押した時や指定の一覧の時など、限定した条件でカスタマイズが発動するように変更する
合わせて、REST API制限の対応と同様の対策も有効ですのでお試し下さい。
Webhook の制限
制限内容:1ドメインにつき60回/分
外部システムからのレコード追加をきっかけにした処理など、Webhook を使用したカスタマイズを多く使用すると抵触する可能性があります。
こちらの制限はアプリ単位ではなく、ドメイン単位なのでご注意下さい。
対策:
- Webhook 以外の条件でカスタマイズが発動するようにカスタマイズを見直す
- 連携元のシステムの処理頻度を見直す
1分間に60回を超えた場合、61回目以降の操作ではWebhookの通知が発生しませんので、必ず上記の対応を心がけるようにして下さい。
分からなくなったとき
作成したカスタマイズがうまく動かないときには、いろいろな方法で動かない原因を探し出して、取り除く必要があります。このような作業を「デバッグ」と言います。
デバッグの方法には色々ありますが、まず動作しているカスタマイズの現状を把握することから始めてください。以下にいくつかの方法を挙げておきます。
- 「他のアクションの実行が完了した時」で、意図したアクションの完了を待っているかどうか
- 動かないアクションが含まれているページ 以外 をすべて「無効」にし、そのページだけで動作を確認する。更にそのページの中で、確認したいアクション 以外 を全て無効にして、動作を確認する
- 意図したレコードが取得できているかを「レコードの一覧をポップアップで表示する」で表示してみる
- レコードが更新されない、フィールドにセットされないとき、「情報ダイアログを表示する」でキーや更新しようとしているフィールドの値を表示してみる
これらの方法でもよく分からなかった場合には、チャットサポートまで、お気軽にお問い合わせいただければ幸いです!