トップ回答者
【JavaScript・SharePoint】SharePoint Online の管理者のアドレスを、JavaScriptで取得する方法。

質問
-
SharePoint Online で、管理者のアドレスを取得するスクリプトを書いておりますが取得出来ず、困っております。
◎やりたい事
自分が考えた方法は、サイトの「ユーザー・グループ」を全て取得し、その中で『管理者』のみを検索し、
フォームの新規作成画面のユーザー列に、管理者のアドレスを設定したいと考えました。
-----------------------------------------------------------
①サイトの「ユーザー・グループ」を全て取得
↓
②『管理者』を検索し、アドレスを設定
-----------------------------------------------------------
しかし、参考サイトを見ながらコードを書いていますが、まず「ユーザー・グループ」を全て取得が出来ません。
もし、取得出来たとしても「権限が管理者」をどう検索しようか悩んでおります。
////////////////////////////////////////////////////////////
// 実際のコード
////////////////////////////////////////////////////////////
var siteUrl = "サイトのURL"; function retrieveAllUsersInGroup() { var clientContext = new SP.ClientContext(siteUrl); var collGroup = clientContext.get_web().get_siteGroups(); var oGroup = collGroup.getById(175); this.collUser = oGroup.get_users(); clientContext.load(collUser); clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); } function onQuerySucceeded() { var userInfo = ''; var userEnumerator = collUser.getEnumerator(); while (userEnumerator.moveNext()) { var oUser = userEnumerator.get_current(); this.userInfo += '\nUser: ' + oUser.get_title() + '\nID: ' + oUser.get_id() + '\nEmail: ' + oUser.get_email() + '\nLogin Name: ' + oUser.get_loginName(); } alert(userInfo); } function onQueryFailed(sender, args) { alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace()); }
もしどなたか分かる方がいれば、よろしくお願い致します。
回答
-
まず、取得したい"管理者"のアドレスは以下のどの管理者になるのでしょうか。
1.Office365の管理者
2.サイトコレクションの管理者
3.サイトの管理者
それぞれ、Javascriptからの取得手順を簡単にまとめると、、
1.Office365の管理者
Office365のAPIを呼ぶことになるかと思いますが、敷居が高いと思います。
参考:CORS を使用してOffice 365 API にアクセスするJavaScript Web アプリを作成する
2.サイトコレクションの管理者
対象サイトコレクションにおいてグループを取得するのではなく、web.get_siteUsers()でユーザーの一覧を取得し、ユーザーごとに、get_isSiteAdmin ()で、サイトコレクションの管理者かどうかを判定します。
3.サイトの管理者
対象サイトの権限付与状況(RoleAssginments)を取得し、管理者を抽出します。
となるかと。
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年8月15日 4:02
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2017年8月21日 6:28
すべての返信
-
まず、取得したい"管理者"のアドレスは以下のどの管理者になるのでしょうか。
1.Office365の管理者
2.サイトコレクションの管理者
3.サイトの管理者
それぞれ、Javascriptからの取得手順を簡単にまとめると、、
1.Office365の管理者
Office365のAPIを呼ぶことになるかと思いますが、敷居が高いと思います。
参考:CORS を使用してOffice 365 API にアクセスするJavaScript Web アプリを作成する
2.サイトコレクションの管理者
対象サイトコレクションにおいてグループを取得するのではなく、web.get_siteUsers()でユーザーの一覧を取得し、ユーザーごとに、get_isSiteAdmin ()で、サイトコレクションの管理者かどうかを判定します。
3.サイトの管理者
対象サイトの権限付与状況(RoleAssginments)を取得し、管理者を抽出します。
となるかと。
- 回答の候補に設定 栗下 望Microsoft employee, Moderator 2017年8月15日 4:02
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2017年8月21日 6:28
-
フォーラムオペレーターの栗下 望です。
mie.8 さん、こんにちは。ご質問いただいた内容につきましては、
その後いかがでしょうか?たけさとさんからお寄せいただいた回答が参考になりそうでしたので、
私のほうから[回答としてマーク]を設定させていただきました。私が設定した[回答としてマーク]はあとから外すことが出来ます。
また、何か進展があればお知らせいただけますと、
他のフォーラムユーザーの参考にもなりますので、
是非こちらのスレッドへご返信くださいね。どうぞよろしくお願いいたします。
MSDN/TechNet Community Support 栗下 望