10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

kintoneのスペース管理者を確認する方法

Last updated at Posted at 2018-01-18

#kintoneスペース
kintoneには掲示板のようにメンバー同士で議論したり、情報をまとめるための『スペース』機能があります。
社内で新しくプロジェクトが出来た際にスペースを新しく立ち上げると、情報が一元管理しやすくなって、とても便利です。

space1.PNG

#スペース管理者
スペースを新しく作成する際に、作成者は『スペースの管理者』を設定することが出来ます。
スペースの管理者は下記の権限を持ちます
・スペースの本文の編集権限
・全てのスレッドの本文の編集権限
・スペースの基本情報(名前、カバー画像等)の編集権限
・スペースのメンバーの編集権限及び管理者の設定権限

逆にいうと、スペースの管理者じゃないと、上記の権限がありません。
『スレッドの本文を更新したい』と思ったら、スペース管理者に連絡して更新してもらう必要があります。

これはこれで、運用的に大丈夫だとは思うのですが、一つ問題が・・・

space2.PNG

誰 が ス ペ ー ス 管 理 者 か が 分 か ら な い

故に、誰に連絡すれば良いかわからない・・・/(^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にログインし、適当なスペースに遷移してください。
先程登録したブックマークをクリックします。

spaceadmins.gif

スペースの管理者になっているメンバーの情報がダイアログに表示されます。
表示される内容は『表示名(ログイン名)』になります。

念のために、スペースのメンバー設定をGUIで確認しましょう。

space3.PNG

アラートダイアログで表示した情報が正しいですね!

##制限事項
・現時点では、Mac Safari、Mac Chrome、Windows IE11、Windows Chromeで動作確認出来ています。
・スペース、ゲストスペース、及びスレッドで動作確認が出来ていますが、通知ペインを開いた状態では動作しません。

##コードの説明
コードが1行にまとめられていて見にくかったので、見やすいフォーマットのコードをコメント入りで下記に記載します。

get_space_admins.js
//スペースの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 正常に動作することを確認

10
5
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?