前提・実現したい事
JavaScriptを使用し、SharePoint Online上でユーザーの
「アクセス権限」を変更したいです。
本来の希望動作は「観覧・編集・登録・・・」等、様々に変更可能にしたいです。
現段階では、テスト作成なので「観覧のみ」に設定したいです。
JavaScript
1// リストを固有の権限に設定し既存権限をすべてクリア 2oListItem.breakRoleInheritance(false, false);
の部分で、権限をリセットされているはずが、リセット(初期化)されていないという事でしょうか?
発生している問題・Error Message
自分の権限は元々「フルコントロール」が付いております。
下記プログラムを実行し、
"自分の予想では"「フルコントロール → 観覧」に権限が変更されると思っていました。
しかし実際は、「フルコントロール → フルコントロール,観覧」のように
自分の権限に『追加』されてしまいます。
どなたか分かる方いれば、よろしくお願い致します。
実際のソースコード
JavaScript
1function breakSecurityInheritanceChangeUser() { 2 // リスト名 3 var listName = "test"; 4 5 // コンテキストの取得 6 var clientContext = new SP.ClientContext; 7 8 // 現在のログインユーザーの取得 9 var oUser = clientContext.get_web().get_currentUser(); 10 11 // 対象リストの取得 12 var oList = clientContext.get_web().get_lists().getByTitle(listName); 13 14 // 対象アイテム選択 15 var itemId = 1; 16 17 /*---------------------------------------------------------------------------*/ 18 // 処理 19 /*---------------------------------------------------------------------------*/ 20 21 // アイテム情報取得 22 var oListItem = oList.getItemById(itemId); 23 24 // リストを固有の権限に設定し既存権限をすべてクリア 25 oListItem.breakRoleInheritance(false, false); 26 27 // ロールバインディング 28 var collRoleDefinitionBinding = SP.RoleDefinitionBindingCollection.newObject(clientContext); 29 30 // 閲覧アクセス許可レベルの追加 31 collRoleDefinitionBinding.add(clientContext.get_web().get_roleDefinitions().getByType(SP.RoleType.reader)); 32 33 // ユーザーをバインド 34 oListItem.get_roleAssignments().add(oUser, collRoleDefinitionBinding); 35 36 // ユーザー情報読込 37 clientContext.load(oUser); 38 39 // アイテム情報読込 40 clientContext.load(oListItem, "Title"); 41 42 // 実行 -- アラートにて表示 -- 43 clientContext.executeQueryAsync(function(){ 44 alert("次のアイテムに固有の権限を設定しました :\n" + oListItem.get_item("Title") + "\n\n" + "新たに次のユーザーに権限を付与しました :\n" + _spPageContextInfo.userLoginName); 45 }, onQueryFailed); 46} 47 48/*---------------------------------------------------------------------------*/ 49// 失敗時のメッセージ 50/*---------------------------------------------------------------------------*/ 51function onQueryFailed(sender, args) { 52 alert("Request failed. " + args.get_message() + "\n" + args.get_stackTrace()); 53}
試した事
補足情報(言語/FW/ツール等のVersion)
・Window 7
・SharePoint Online(Office365)
・IE、Google Chrome

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。