前回の記事ではkintoneのログインユーザー情報の取得について解説しました。
続いて、kintoneにおけるJavaScriptカスタマイズでは「ドメイン名」を取得できます。
この記事ではドメイン名の取得処理について解説します。
- kintoneのJavaScriptカスタマイズでは、ドメイン名を取得できます。
- 「location.origin」で現在アクセスしているドメイン名を取得できます。
kintoneのドメイン名とは
kintoneで別の画面を開きたいということはありませんか?
ボタンをクリックしたらこの画面を開きたい。
レコードを保存したらあの画面を開きたい。
そのためにはリンク先のURLが必要です。
アプリの場合はURLに規則があります。
レコード一覧画面
https://サブドメイン名.cybozu.com/k/アプリID
レコード追加画面
https://サブドメイン名.cybozu.com/k/アプリID/edit
これらのURLを指定してリンクを作ります。
kintoneには契約ごとにサブドメイン名が異なるということをこちらの記事で解説しました。
さらに、セキュアアクセスを導入しているユーザーがアクセスする場合「サブドメイン名.s.cybozu.com」のように「.s」が付くということも解説しました。
レコード一覧画面や追加画面などのURLを指定する場合、ソースコード内に直にサブドメイン名を記載して指定することも勿論可能です。
しかし、環境によっては、「セキュアアクセスを使ってアクセスするユーザー」と「セキュアアクセスを使わずにアクセスするユーザー(許可されたIPアドレス内でアクセスするユーザー)」が混在するケースがあります。
「.s」を付けてアクセスするユーザーと付けずにアクセスするユーザーがいる訳です。
この場合は、どのようにドメイン名を判定すれば良いでしょうか。
そこでドメイン名を意識せずにURLを生成する方法があります。
ドメイン名を取得する
以下でプロトコル(https)からドメイン名までを取得できます。
location.origin
これを使って先ほどの2つの画面のURLを書き換えてみます。
レコード一覧画面
location.origin + ‘/k/アプリID’
レコード追加画面
location.origin + ‘/k/アプリID/edit’
アプリIDは全体JavaScript等で変数定義しておくのも良いでしょう。
現在アクセスしているドメイン名を取得するため、サブドメイン名が何であるか、「.s」が付いているかどうかを意識しなくて良いのです。
実装例:レコード追加保存成功後に別アプリの追加画面を新しいタブで開く
それでは、実装例を見ていきます。
以下のコードでは、レコード追加保存成功後にアプリID:120の追加画面を新しいタブで開きます。
(() => {
'use strict';
const APP_NO = 120;
kintone.events.on('app.record.create.submit.success', event => {
// アプリID:120の追加画面を新しいタブで開く
window.open(location.origin + `/k/${APP_NO}/edit`, '_blank', 'noreferrer');
return event;
});
})()
- kintoneのJavaScriptカスタマイズでは、ドメイン名を取得できます。
- 「location.origin」で現在アクセスしているドメイン名を取得できます。