先日、痒い所に手が届くkintoneプラグインを提供させていただいたのですが、エラーになるとのこと。
プラグインは、kintone標準の「一覧」を拡張し、絞り込み機能を追加するものです。
これは、URLのクエリ文字列で実現しています。
kintoneには、ゲストスペースと呼ばれる、取引先や協力会社など、社外の人をゲストユーザーとして招待し利用できる特別なスペースがあります。
ゲストユーザーは、ゲストスペースのデータにしか閲覧権限が無いので、ゲストスペースを跨いでのルックアップ機能が使えません。当初この可能性を疑ったのですが違いました。
ゲストスペースではURLのルールが変わるので、その考慮が必要でした。
通常のスペースの場合
https://(サブドメイン).cybozu.com/k/(アプリID)/
ゲストスペースの場合
https://(サブドメイン).cybozu.com/k/guest/(スペースID)/(アプリID)/
飛び先URLは次のようなコードで設定しています。
(q
にはクエリ文字列が入ります)
修正前コード
const baseURL = `https://${location.hostname}/k/${event.appId}/?view=${event.viewId}`;
location.href = q ? `${baseURL}&query=${encodeURI(q)}` : baseURL;
そこで、次のように修正することを考えましたが、スペースIDを取得するAPIは無さそうです。
// URLのパスが /k/guest/ で始まっていれば
const baseURL = location.pathname.startsWith('/k/guest/') ? (ゲストスペースのURL) : (通常のスペースのURL)
現在のURLから、クエリ文字列のみ差し替えれば良さそうなので、location.href
ではなくlocation.search
を変更することにしました。
修正後コード
location.search = q ? `view=${event.viewId}&query=${encodeURI(q)}` : `view=${event.viewId}`;