kintone の Javascript カスタマイズの際に気がついた、いままで書いてない雑多なことをまとめておきます。
カスタマイズ関連のあれこれは下記にも書いてますので、こちらもご参考にしてください。
スペーステンプレート
スペーステンプレートを利用すると、簡単にスペースおよびそこに含まれるアプリのコピーを作ることができるので、移行の際には非常に便利です。
ただ、スペースやアプリの更新には使えず、常に新規作成になるので アプリ ID (スペース ID)が変わってしまうため、 Javascript カスタマイズとの相性はいまいちですが、まあ、便利です。
ポータルに画像を含む場合
で、このスペーステンプレートを利用して、ポータルが有効なスペースで、かつポータルに画像を設定しているスペースに対して、スペーステンプレートを作成したら、エラーとなったときがありました。
その時の状況としては、
- 同一ドメインの別スペースで読み込んだ画像を設定しており、その後最初に読み込んだスペースを削除した場合に起きた
- 詳細は条件は不明だが、アップロードした素材への参照が問題になることがあるようだ
- エラーになった画像を、再アップロードしてポータルに設定したら問題なく作成できた
という感じでした。
スペーステンプレートを作成する際には、ちょっと気を付けたほうがいいかもしれませんね。
レコードの書き出しと読み込み
アプリを移行する場合、レコードの内容は移されません。なので、別作業で、レコードの書き出しと読み込みを行う必要があるかと思います。
この操作の時に、こんなことに気が付きました。
- ルックアップのコピーフィールドは、書き出さなくても、読み込み時に適切に対応してくれる(ルックアップ元がある場合)
- 読み込み時に、『一括更新のキー』として『レコード番号』にチェックがついていると、新規レコードの読み込みに失敗する
最初、2つ目の制限に気がつかなくて、ちょっと焦りました。結局、これは、下記
ファイルからレコードのデータをアプリに読み込む | kintone ヘルプ
のリファレンスの補足にも明記されていることになります。
ということで、アプリを移行するような場合(新規にレコードをコピーするような場合)には、『一括更新のキー』のチェックはなくても問題ないので、チェックを外した設定で読み込めば問題なく取り込めます。
ルックアップと変更イベント
ルックアップ(フィールド)を元に、ルックアップしたら何かしら行いたい、というカスタマイズがあると思います。ですが、ルックアップフィールド自体には、変更イベントが発生しません。
なので、こういう時は、ルックアップ取得時に一緒にコピーするフィールドを用意しておき、そのコピーフィールドに変更イベントを定義して、変更したことを分かるようにすれば対応できます。ちなみに、このコピーフィールドは、変更禁止にしておくとルックアップによる変更イベントのみを発生させて受け取ることができるようになります。
計算フィールドと変更イベント
で、これは聞いた話で自分ではまだ試してないんですが、同様のことが、計算フィールドでも起きるということだそうです(@kimiko0217 さんに教えていただきました)。
まとめ
ある程度カスタマイズしようとすると、こういった kintone の流儀を身に着けておかないと、なかなか効率があがりませんね。きっと、また別のところではまるでしょうが、とりあえずはこんなところで。
何かの参考になれば幸いです。