はじめに
こんにちは!新人の江﨑です。
皆さん、ゲストスペース使っていますか?外部の方とやりとりするのに便利ですよね。
ただ運用していると、ときにはゲストスペースのアプリの内容をスペース内アプリに転記したいことがあると思います。
そこで、今回は新人研修で開発した「ゲストスペース内アプリのレコードを、スペース内アプリに転記する」カスタマイズをサンプルとして紹介します。
また、このサンプルを作成する際に詰まったkintone.api.url関数の勘所も分かりやすく解説します。
実装イメージ
- ゲストスペース内アプリのレコード詳細画面に「追加ボタン」を設置
- 「追加ボタン」を押すと、ゲストスペース内アプリのレコードが、スペース内アプリのレコードに転記
アプリアクションでは、ゲストスペース内アプリからスペース内アプリへのレコード転記ができません。
下準備
アプリの準備(ゲストスペース)
フィールド名 | フィールドタイプ | フィールドコード |
---|---|---|
転記元 | 文字列(1行) | from_field |
アプリの準備(スペース)
フィールド名 | フィールドタイプ | フィールドコード |
---|---|---|
転記先 | 文字列(1行) | to_field |
カスタマイズの設定
「アプリの設定 > JavaScript / CSSでカスタマイズ」の「PC用のJavaScriptファイル」にサンプルプログラムを設定します。
次のサンプルプログラムをエディターにコピーして、ファイル名を「sample.js」、文字コードを「UTF-8」で保存、アップロードします。
ファイル名は任意ですが、ファイルの拡張子は「js」にしてください。
|
|
ボタンの見た目を新デザインにそろえる場合は 51-modern-default を参考に、「51-modern-default.css」を「PC用のCSSファイル」にアップロードします。
設定した画面
「JavaScript / CSSによるカスタマイズ」画面でそれぞれ設定した例を紹介します。
動作確認
ゲストスペースアプリにサンプルデータを登録、ボタン「追加する」をクリックして結果を確認してください。
レコードが転記されたでしょうか?転記されない場合はアプリIDやフィールドコードを確認してください。
ワンポイント
APIのURLを正しく指定することが大切です。
通常のスペース内またはゲストスペース内というように、同じ種類のスペース内で完結する操作では、URLの取得方法を次のように記述することで、スペースを問わずにコードを共通で利用できます。
|
|
ただ、今回のように異なる種類のスペースをまたがるカスタマイズの場合には注意が必要です。
ゲストスペースのアプリからスペースのアプリを操作する場合は、スペース用URLを指定します。
このように「操作元のスペース」ではなく、「操作先のスペース」に沿ったAPIを指定する必要があります。
APIのパスからURLを取得する kintone.api.url関数 の挙動を以下の図に示します。
ゲストスペース内アプリで関数の2つ目の引数にtrue
を指定するとゲストスペース用のURLが取得できますが、これはゲストスペース内アプリの場合のみです。
挙動が分かりにくいと思うので、ケースごとに適切なAPIのURL指定方法を以下にまとめました。
操作元 | 操作先 | URLの取得方法 |
---|---|---|
スペース | スペース | kintone.api.url('/k/v1/record', true) |
スペース | ゲストスペース | この関数は使用できないため、URLを直接指定する必要があります。 |
ゲストスペース | スペース | kintone.api.url('/k/v1/record', false) |
ゲストスペース | ゲストスペース | kintone.api.url('/k/v1/record', true) |
スペースにおいてkintone.api.url関数は引数を変更してもスペース用APIのURLしか取得できません。
そのため、スペースからゲストスペースのときは関数を使うことができず、URLを直接指定する必要があります。
異なる種類のスペースをまたぐときのAPIの指定方法は理解していただけたでしょうか?
難しいところもありますが、理解できると開発の幅が広がりますよ!