(著者:サイボウズ 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月版で確認したものになります。
kintone.api.url を使って、
kintone.api(kintone.api.url('/k/v1/app/customize', true), 'GET', body, function(resp) {
のようにしても、
「ゲストスペース内のアプリを操作する場合は、リクエストの送信先を「/k/guest/(ゲストスペースのID)/v1/...」にします」
というエラーになってしまいます・・・
回答が遅くなり申し訳ありません。
この記事のサンプルコードが有効なのは、
操作元 -> 操作先のアプリが次の場合です。
操作元がスペース内、操作先がゲストスペースの場合はエラーになりますのでURIを直接指定する必要があります。
詳細については 「ゲストスペース内アプリのレコードを、
スペース内アプリに転記(https://developer.cybozu.io/hc/ja/articles/115003525206) 」の記事内の「ワンポイント」に詳しい対応表がありますのでご参考ください。
よろしくお願いいたします。