ログインユーザーの「優先する組織」に応じてポータルの表示を切り替えたく、developer networkの記事( ポータルに表示する内容を組織によって出し分けよう!〜kintoneのポータルカスタマイズ紹介 #2〜)のカスタマイズを本番環境に適用しました。
切り替えは実現できたのですが、困ったことが2点あります。
①console.logで優先する組織の値を確認しようとすると、undefinedになる
console.logで優先する組織の値を確認しようとすると、undefinedになっています。切り替えは実現できているので優先する組織の取得自体はできていると思うのですが、何故でしょうか?
②セキュアアクセス用のURL(「.s」付き)に自動変換されない
セキュアアクセスの証明書をインストールした端末からアクセスした場合、 ヘルプページの通り、URLが自動的に「.s」付きに変換されます。
しかし、今回のカスタマイズで表示させたリンクは変換がされません。
検証したところ、いずれもリッチエディターですが
・通常のポータル設定のリンク:自動変換される
・一般的なメッセージアプリなどのリンク:自動変換される
・カスタマイズした新ポータル:自動変換されずs無しのリンクのまま
となってしまいます。
コードは下記の通りで、
// ログインユーザーの情報を取得_課題1の該当箇所です
const loginUser = kintone.getLoginUser();
// 優先する組織の値をconsole.logで表示_課題1の該当箇所です
console.log(‘ログインユーザーの優先する組織:’, loginUser.preferredOrganization);
の部分以外は元記事のままです。
(function() {
// 管理アプリの指定
const MASTER_APPID = 3993;
// 優先される組織が含まれるレコードがなかったときに表示するレコードの指定
const DEFAULT_RECORD_NUMBER = 1;
// お知らせ欄に表示されるリッチエディターのフィールドコード
const RICH_TEXT_EDITOR_CODE = '表示する内容';
// 表示させたい組織の入力
const ORGANIZATION_CODE = '表示先組織';
// 表示される場所のIDを指定
const NOTI_AREA_ID = 'noti_area';
// ログインユーザーの情報を取得
const loginUser = kintone.getLoginUser();
// 優先する組織の値をconsole.logで表示_課題1の該当箇所です
console.log('ログインユーザーの優先する組織:', loginUser.preferredOrganization);
const notiElArea = document.getElementById(NOTI_AREA_ID);
const renderNotiContent = function(content) {
notiElArea.innerHTML = content;
};
const errorMessage = function(error) {
const notiDate = error.message;
alert('ポータルでの処理でエラーが発生しました。\n担当者にお問い合わせください。\n\nエラーの内容\n' + notiDate);
};
const fetchDefaultNoti = function() {
const defaultParams = {
'app': MASTER_APPID,
'id': DEFAULT_RECORD_NUMBER
};
return kintone.api(kintone.api.url('/k/v1/record', true), 'GET', defaultParams).then(function(resp) {
return resp.record[RICH_TEXT_EDITOR_CODE].value;
});
};
const fetchNoti = function() {
const params = {
'app': MASTER_APPID,
'query': ORGANIZATION_CODE + ' in (PRIMARY_ORGANIZATION()) limit 1',
'fields': [RICH_TEXT_EDITOR_CODE]
};
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', params).then(function(resp) {
if (resp.records.length === 0) {
return fetchDefaultNoti();
}
return resp.records[0][RICH_TEXT_EDITOR_CODE].value;
});
};
fetchNoti().then(renderNotiContent).catch(errorMessage);
})();
以上について、よろしくお願いいたします。