カテゴリー内の他の記事

kintone.apiにゲストスペースでも使える正しいパスを指定する

(著者:サイボウズ KADOYA Ryo

REST APIのURLについて

kintoneのREST APIをJavaScriptから実行するには、kintone.api()を使用します。kintone.apiの第一引数には実行するREST APIのパスを指定します

通常のアプリの場合

kintone.api('/k/v1/record', 'GET', {app: 1, id: 5}, function(resp) {});

ゲストスペース内アプリの場合

このとき、REST APIを実行するアプリがゲストスペース内アプリの場合、このパスでは実行できません。ゲストスペース内アプリのREST APIは "/k/guest/" から始まるため、通常のAPIとはエンドポイントが異なります。ゲストスペース内アプリのREST APIのパスは、例えば以下のようになります。

kintone.api('/k/guest/99/v1/record', 'GET', {app: 1, id: 5}, function(resp) {});

どちらでも使える例

このままでは、REST APIを実行するアプリが通常のアプリかゲストスペース内アプリかによって、JavaScriptの記述を変更する必要がでてきます。以下のように記述することで、通常のアプリでもゲストスペース内アプリでもコードを共通で利用できます。

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {app: 1, id: 5}, function(resp) {});

kintone.api.url()を使用することで、ゲストスペース内の場合は自動的に現在のゲストコンテキスト(/guest/{id})がURLに挿入されます。第2引数にtrueを付けることを忘れないでください。

このTipsは、2014年9月版で確認したものになります。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
佐藤

kintone.api.url を使って、

kintone.api(kintone.api.url('/k/v1/app/customize', true), 'GET', body, function(resp) {

のようにしても、

「ゲストスペース内のアプリを操作する場合は、リクエストの送信先を「/k/guest/(ゲストスペースのID)/v1/...」にします」

というエラーになってしまいます・・・

 
Avatar
cybozu Development team

回答が遅くなり申し訳ありません。

この記事のサンプルコードが有効なのは、

操作元 -> 操作先のアプリが次の場合です。

  • 通常スペース内 -> 通常スペース内
  • ゲストスペース内 -> ゲストスペース内

操作元がスペース内、操作先がゲストスペースの場合はエラーになりますのでURIを直接指定する必要があります。

詳細については 「ゲストスペース内アプリのレコードを、
スペース内アプリに転記(https://developer.cybozu.io/hc/ja/articles/115003525206) 」の記事内の「ワンポイント」に詳しい対応表がありますのでご参考ください。

よろしくお願いいたします。

サインインしてコメントを残してください。