#kintoneスペース
kintoneには掲示板のようにメンバー同士で議論したり、情報をまとめるための『スペース』機能があります。
社内で新しくプロジェクトが出来た際にスペースを新しく立ち上げると、情報が一元管理しやすくなって、とても便利です。
#スペース管理者
スペースを新しく作成する際に、作成者は『スペースの管理者』を設定することが出来ます。
スペースの管理者は下記の権限を持ちます
・スペースの本文の編集権限
・全てのスレッドの本文の編集権限
・スペースの基本情報(名前、カバー画像等)の編集権限
・スペースのメンバーの編集権限及び管理者の設定権限
逆にいうと、スペースの管理者じゃないと、上記の権限がありません。
『スレッドの本文を更新したい』と思ったら、スペース管理者に連絡して更新してもらう必要があります。
これはこれで、運用的に大丈夫だとは思うのですが、一つ問題が・・・
誰 が ス ペ ー ス 管 理 者 か が 分 か ら な い
故に、誰に連絡すれば良いかわからない・・・/(^o^)\
っという問題に社内でちょくちょく出くわしてるので、スペース管理者を簡単に確認する方法を今回紹介します。
#管理者を確認する方法
##下準備
ブラウザを立ち上げ、新しくブックマークを追加します。
URLを指定する設定があるので、下記の1行のコードをコピペしてください。
javascript: var regex = /space\/\d*/; var url = window.location.href; var spaceID = url.match(regex)[0].replace('space/','');kintone.api(kintone.api.url('/k/v1/space/members', true), 'GET', {id: spaceID}).then(function(resp) { var admins = []; for (var i = 0; i<resp.members.length; i++){ if (resp.members[i].entity.type === "USER" && resp.members[i].isAdmin === true){ admins.push(resp.members[i].entity.code) } } return(admins); }).then(function(admins){ var body = { "codes": admins, "offset": 0, "size": 100 }; kintone.api(kintone.api.url('/v1/users', true), 'GET', body, function(resp) { var alertmessage = "スペースの管理者:\n"; for (var j=0; j<resp.users.length; j++){ alertmessage += resp.users[j].name + " (" + resp.users[j].code + ")、 "; } alertmessage = alertmessage.slice(0, -2); alert(alertmessage); } ); } );
##実行方法
kintoneにログインし、適当なスペースに遷移してください。
先程登録したブックマークをクリックします。
スペースの管理者になっているメンバーの情報がダイアログに表示されます。
表示される内容は『表示名(ログイン名)』になります。
念のために、スペースのメンバー設定をGUIで確認しましょう。
アラートダイアログで表示した情報が正しいですね!
##制限事項
・現時点では、Mac Safari、Mac Chrome、Windows IE11、Windows Chromeで動作確認出来ています。
・スペース、ゲストスペース、及びスレッドで動作確認が出来ていますが、通知ペインを開いた状態では動作しません。
##コードの説明
コードが1行にまとめられていて見にくかったので、見やすいフォーマットのコードをコメント入りで下記に記載します。
//スペースのIDを取得する
var regex = /space\/\d*/;
var url = window.location.href;
var spaceID = url.match(regex)[0].replace('space/','');
//スペースの管理者情報を取得し、さらに各管理者の詳細な情報を取得し、まとめたものをダイアログに表示する
kintone.api(kintone.api.url('/k/v1/space/members', true), 'GET', {id: spaceID}).then(function(resp) {
var admins = [];
for (var i = 0; i<resp.members.length; i++){
//組織・グループの情報は除外し、管理者に設定されたユーザだけ情報を抜き出す
if (resp.members[i].entity.type === "USER" && resp.members[i].isAdmin === true){
admins.push(resp.members[i].entity.code)
}
}
return(admins);
}).then(function(admins){
//User API を叩く
var body = {
"codes": admins,
"offset": 0,
"size": 100
};
kintone.api(kintone.api.url('/v1/users', true), 'GET', body, function(resp) {
var alertmessage = "スペースの管理者:\n";
for (var j=0; j<resp.users.length; j++){
alertmessage += resp.users[j].name + " (" + resp.users[j].code + ")、 ";
}
//最後の "、 " を文字列から外す
alertmessage = alertmessage.slice(0, -2);
alert(alertmessage);
}
);
}
);
##説明
スペースの管理者はスペースのメンバーの取得APIを叩いて取得しています。
このAPIを叩くために、スペースIDが必要になります。
ただkintoneにはスペースIDを取得するメソッドがありません。アプリIDだったら kintone.app.getId();を使用して取得するのですが、残念ながらkintoneにはkintone.space.getId() のようなメソッドは存在しません・・・
なので、地道にURLを解析してスペースIDを取得する方法で実装しました。
スペース、ゲストスペース、スレッド、セキュアアクセスのURLに対応しています。
とりあえずこの実装でスペース管理者の情報が取得出来るのですが、実はスペースのメンバーの取得APIだけだと、メンバーの表示名を取得することが出来ません。ぐぬぬ。
ということで、取得したメンバーのコードを使用して、ユーザーエクスポート API(JSON)を叩き、各ユーザの表示名を取得するようにしました。
最後に、取得した情報をまとめて、アラートで表示しました。
##終わりに
便利なコードなので、ブラウザのブックマークに保存しましょう!
・
・
・
スペースID取得するメソッドが欲しかった・・・(´・ω・`)
##検証
2019/03/15 正常に動作することを確認