SharePoint サポートチームの江口です。今回は、SharePoint Online/SharePoint Server 2013 (オンプレミス) で、Excel 2013 セルと SharePoint ドキュメント ライブラリ列の連携方法についてご案内します。
はじめに
SharePoint ドキュメント ライブラリの列と Excel のセルを連携させることができます。
以下に手順を記載しますので確認してください。
- 目次
手順) Excel テンプレート ファイルの作成
手順) サイト コンテンツ タイプの追加
手順) SharePoint ドキュメント ライブラリの設定
1) Excel 2013 を起動します。
2) SharePoint ドキュメント ライブラリ列と連携したいセルを選択した状態で、リボンメニューから [数式] タブ - [名前の定義] をクリックします。
3) "新しい名前" ダイアログで、名前欄に任意の名前を定義します。
(画像では、セルB2 に対して "Excel_セル_データ" という名前を定義しています)
4) [ファイル] タブ - [プロパティ] - [詳細プロパティ] をクリックします。
5) "プロパティ" ダイアログで、[ユーザー設定] タブをクリックします。
6) [プロパティ名] に上記手順 3) で定義した名前を入力し、[内容にリンク] ボックスにチェックを入れ、[リンク元] に名前を定義したセルを選択し、[追加] ボタンをクリックします。
7) プロパティの一覧に、追加した項目が表示されていることを確認します。
(画像では、"Excel_セル_データ" プロパティを追加しています)
8) 上記設定をした Excel ファイルを、[ファイル] - [名前を付けて保存] をクリックし、ローカルコンピュータ内に保存します。このファイルはテンプレート ファイルとして使用するため、保存時のファイルの種類に "Excel テンプレート(*.xltx)" を選択して保存します。
上記手順で作成した Excel テンプレート ファイルを SharePoint サイト内でテンプレート ファイルとして使用するため、SharePoint サイトでサイト コンテンツ タイプを作成し、テンプレート ファイルとして設定します。
1) SharePoint サイトにアクセスします。
2) [サイトの設定] - [サイト コンテンツ タイプ] - [作成] をクリックします。
3) 新しいサイト コンテンツ タイプ ページ (ctypenew.aspx) で、以下のように設定し [OK] をクリックします。
名前: 任意の名前を入力します (例: Excel セル データ用 サイト コンテンツ タイプ)
親コンテンツ タイプの選択元: "ドキュメント コンテンツ タイプ" を選択します
親コンテンツ タイプ: "ドキュメント" を選択します
4) サイト コンテンツ タイプの詳細ページ (ManageContentType.aspx) で、[詳細設定] をクリックします。
5) "ドキュメントのテンプレート" 項目で "新しいドキュメント テンプレートをアップロードする" を選択し上記手順で作成した Excel テンプレート ファイル (*.xltx) を指定して [OK] をクリックします。
1) 新しい SharePoint ドキュメント ライブラリを作成します。
2) [ライブラリ] タブ - [ライブラリの設定] - [列の作成] をクリックします。
3) 上記手順で作成したプロパティ名と同じ名前の列 (例: Excel_セル_データ) を作成します。
4) ライブラリの設定ページ (ListEdit.aspx) で、[詳細設定] をクリックします。
5) 詳細設定ページ (advsetng.aspx) で、"コンテンツ タイプの管理の許可する" に [はい] を選択します。
6) ライブラリの設定ページ (ListEdit.aspx) で、[既存のサイト コンテンツ タイプから追加] をクリックします。
7) コンテンツ タイプの追加ページ (AddContentTypeToList.aspx) で、上記手順で作成したサイト コンテンツ タイプ (例: Excel セル データ用サイト コンテンツ タイプ) を選択し [追加] をクリックして "追加するコンテンツ タイプ" に追加し [OK] をクリックします。
設定内容の動作確認
1) SharePoint ドキュメント ライブラリのトップページ (AllItems.aspx) にアクセスし、[ファイル] タブ - [新しいドキュメント] - [<作成したサイト コンテンツ タイプ (例: Excel セル データ用サイト コンテンツ タイプ)>] をクリックします。
2) 表示された Excel ファイルで、名前を定義したセル (Excel_セル_データ) に値 (例: Sample Data) を入力します。
(画像では、"Excel_セル_データ" セルに、値 "Sample Data" を入力しています)
3) Excel ファイルを保存し、ブラウザ上で再読み込みをして SharePoint ドキュメント ライブラリの最新の状態に更新します。
4) 上記手順で作成した "Excel_セル_データ" 列に、Excel ファイル上で入力した値が表示されていることが確認できます。
補足
SharePoint ドキュメント ライブラリのリストアイテムの "プロパティの表示" または "プロパティの編集" 画面には、"Excel_セル_データ" 列は表示されません。上記青字手順 2) 3) で作成した "Excel_セル_データ" 列は、"Excel セル データ用 サイト コンテンツ タイプ" に関連付いた列ではないため、このような動作となります。サイト コンテンツ タイプと列を関連付けた場合は、ドキュメント情報パネル上に表示されるサーバー プロパティが優先的に連携するため、Excel ファイルのセルと連携できなくなります。
SharePoint ドキュメント ライブラリ上で、"Excel_セル_データ" 列の値を変更したい場合は、以下のようにクイック編集ビューを表示することで変更することができます。クイック編集ビューで変更した値は、Excel ファイル内の "Excel_セル_データ" セルに反映されます。
補足2
上記のように Excel 2013 のセルと SharePoint ドキュメント ライブラリの列を連携させた場合、Excel Online ではセルにリンクされたカスタム プロパティがサポートされていないため開くことができません。設定した場合は Excel 2013 クライアント アプリケーションで開いてください。
こんにちは、SharePoint サポートの佐伯です。これまで検索の設定やカスタマイズについて様々な内容を投稿してまいりました。これらをまとめてご紹介します。検索結果の並べ替えを行う投稿: SharePoint 2013 検索結果 Web パーツの検索結果の並べ替えを行うドキュメントを対象にした検索を行う投稿: SharePoint 2013 クエリ テキストを編集してドキュメントを対象とした検索を行う検索結果のファイルをクライアント アプリケーションで開く検索結果のファイルをブラウザで開くかまたはクライアント アプリケーションで開くかを設定することができます。この設定方法をご紹介しています。投稿: SharePoint 2013 検索結果のファイルをクライアント アプリケーションで開く検索結果でカスタムの管理プロパティを表示する投稿: SharePoint 2013 コンテンツ検索 Web パーツでカスタムの管理プロパティを表示する検索結果の表示を制御する表示テンプレートの概要投稿: SharePoint 2013 検索結果の表示を制御する表示テンプレート検索結果でアイテムの最終更新日時を表示する投稿: SharePoint 2013 アイテム表示テンプレートを使用して検索結果の表示をカスタマイズするすべての検索結果の種類に共通する表示を制御する表示テンプレート投稿: SharePoint 2013 すべての検索結果の種類に共通する表示をカスタマイズする検索結果でプロパティ名を表示する投稿: SharePoint 2013 サイトの表示言語に合わせて検索結果にプロパティ名を表示する検索結果の検索語句を強調する投稿: SharePoint 2013 検索結果で検索語句を強調するカスタマイズ検索結果アイテムのプレビューを表示する投稿: SharePoint 2013 検索結果のホバー パネルをカスタマイズする検索結果アイテムのホバー パネルにメニューを追加する投稿: SharePoint 2013 検索結果のホバー パネルにカスタムのアクションを追加するサイトの新着情報を作成する投稿: SharePoint 2013 お知らせアイテムを新着順に表示するコンテンツ検索 Web パーツを作成する検索結果を 4×N のテーブルで表示する投稿: SharePoint 2013 コントロール表示テンプレートを使用して検索結果アイテムの一覧表示のデザインを変更する検索結果をグリッド テーブルで表示する投稿: SharePoint 2013 表示テンプレートを編集して検索結果アイテムをグリッド テーブルで表示する何ページ目の検索結果であるかを表示する投稿: SharePoint 2013 検索結果が何件目または何ページ目のアイテムであるかを表示する検索ボックスの初期値を設定する投稿: SharePoint 2013 検索ボックスの初期値を変更する絞り込み条件を追加する投稿: SharePoint 2013 検索ページに絞り込み条件を追加する絞り込みの表示を制御する表示テンプレートの概要 投稿: SharePoint 2013 絞り込み Web パーツの表示を制御する表示テンプレート絞り込み条件に該当するアイテム数を表示する投稿: SharePoint 2013 フィルター表示テンプレートを編集して絞り込み条件数を表示する絞り込み全体のデザインを変更する投稿: SharePoint 2013 コントロール表示テンプレートを編集して絞り込み Web パーツのデザインを変更する画像の検索結果を絞り込む検索ナビゲーションを追加する投稿: SharePoint 2013 検索ナビゲーションでバーティカル検索を実現する通知、ユーザー設定、高度な検索リンクを表示または非表示にする投稿: SharePoint 2013 検索結果 Web パーツの下部にあるリンクの表示/非表示を切り替える
こんにちは、SharePoint サポートの佐伯です。前回の投稿でフィルター表示テンプレートの概要について説明しましたので、今回の投稿ではフィルター表示テンプレートのカスタマイズについてご紹介します。SharePoint 既定のフィルター表示テンプレート “絞り込みアイテム” を使用すると、絞り込み条件は以下のように表示されます。今回は、この表示に絞り込み条件数を追加するフィルター表示テンプレートを作成しましょう!フィルター表示テンプレート (*.html) の作成新たにフィルター表示テンプレートを作成しましょう。既存の表示テンプレートをコピーして作成すると簡単です。SharePoint 既定のフィルター表示テンプレート “絞り込みアイテム” をもとに、フィルター表示テンプレートを作成します。なお、表示テンプレートの *.html ファイルは発行インフラストラクチャをアクティブにしている場合のみ作成できます。この投稿では、発行インフラストラクチャをアクティブにしたサイトで *.html ファイルを作成する方法をご紹介します。1. [サイトの設定] – [Web デザイナー ギャラリー] – [マスター ページ] をクリックし、マスター ページ ギャラリーを開きます。2. [Display Templates]、[Filters] の順にフォルダを展開し、Filter_Default.html ファイルをダウンロードします。3. ダウンロードした Filter_Default.html ファイルのファイル名を変更します。ここでは、Filter_Default_Counts.html に変更します。4. Filter_Default_Counts.html ファイルを開き、<body> タグの直後にある <div> の id に、この *.html ファイルのファイル名を記述します。<body> <div id="Filter_Default_Counts">5. <title> には表示テンプレートのタイトルを記述します。<title>絞り込みアイテム(数)</title>
6. <mso:MasterPageDescription> には表示テンプレートの説明を記述します。<mso:MasterPageDescription msdt:dt="string">絞り込み条件と絞り込み条件数を表示するフィルター表示テンプレートです。</mso:MasterPageDescription>
7. 絞り込み条件数を表示するため、JavaScript を編集します。ShowCounts の値を false から true に変更します。(変更前) this.Options = { ShowClientPeoplePicker: false, ShowCounts: false };(変更後) this.Options = { ShowClientPeoplePicker: false, ShowCounts: true };
8. Filter_Default_Counts.html ファイルを保存します。これでフィルター表示テンプレートの作成は完了です。- 表示テンプレート ファイルのアップロードと適用1. 作成した Filter_Default_Counts.html ファイルをマスター ページ ギャラリーの [Display Templates] - [Filters] フォルダにアップロードします。2. アップロード後のプロパティの編集画面で、以下のように設定が反映されていることを確認し、保存します。3. 絞り込み Web パーツを配置したページを開き、ページ右上の [ページの編集] をクリックします。4. 絞り込み Web パーツの [Web パーツの編集] をクリックします。5. [この Web パーツで絞り込み条件を選択] にチェックを入れ、[絞り込み条件の選択...] をクリックします。6. [選択した絞り込み条件] 項目で該当の管理プロパティを選択し、[表示テンプレート] 項目で、今回作成したフィルター表示テンプレートを選択します。7. Web パーツを保存し、ページを保存します。以上で、フィルター表示テンプレートの設定は完了です。検索のカスタマイズや設定に関する過去の投稿もご参考にしていただけますと幸いです。SharePoint 2013 絞り込み Web パーツの表示を制御する表示テンプレートSharePoint 2013 表示テンプレートを編集して検索結果アイテムをグリッド テーブルで表示するSharePoint 2013 検索結果が何件目または何ページ目のアイテムであるかを表示するSharePoint 2013 検索結果のホバー パネルにカスタムのアクションを追加するSharePoint 2013 コントロール表示テンプレートを使用して検索結果アイテムの一覧表示のデザインを変更するSharePoint 2013 クエリ テキストを編集してドキュメントを対象とした検索を行うSharePoint 2013 検索ボックスの初期値を変更するSharePoint 2013 検索結果のファイルをクライアント アプリケーションで開くSharePoint 2013 検索結果で検索語句を強調するカスタマイズSharePoint 2013 コンテンツ検索 Web パーツでカスタムの管理プロパティを表示するSharePoint 2013 お知らせアイテムを新着順に表示するコンテンツ検索 Web パーツを作成するSharePoint 2013 サイトの表示言語に合わせて検索結果にプロパティ名を表示するSharePoint 2013 検索結果のホバー パネルをカスタマイズするSharePoint 2013 すべての検索結果の種類に共通する表示をカスタマイズするSharePoint 2013 アイテム表示テンプレートを使用して検索結果の表示をカスタマイズするSharePoint 2013 検索結果の表示を制御する表示テンプレート
こんにちは、SharePoint サポートの佐伯です。今回の投稿では、検索結果をフィルターする絞り込み Web パーツの表示を制御する表示テンプレートについてご紹介します。絞り込み Web パーツ用の表示テンプレート絞り込み Web パーツの表示には、コントロール表示テンプレートとフィルター表示テンプレートを使用します。コントロール表示テンプレートでは Web パーツ全体の表示が定義されています。フィルター表示テンプレートには絞り込み条件ごとの表示が定義され、下の画像では、検索結果の種類、作成者、更新日といった絞り込み条件にそれぞれフィルター表示テンプレートが適用されています。- 表示テンプレート ファイルと格納場所絞り込み Web パーツ用の表示テンプレート ファイルは、マスター ページ ギャラリーに格納されています。1. [サイトの設定] – [Web デザイナー ギャラリー] – [マスター ページ] にアクセスします。2. [Display Templates]、[Filters] フォルダを順に展開します。このフォルダ内に、絞り込み Web パーツ用の表示テンプレートが格納されています。※表示テンプレートには *.html ファイルと *.js ファイルがあります。サイト コレクションの機能 “発行インフラストラクチャ” をアクティブにした場合に *.html ファイルが作成されますが、非アクティブの場合は *.js ファイルのみとなります。この *.html ファイルと *.js ファイルは関連付けられており、*.html ファイルを編集してアップロードすると、変更内容が *.js ファイルに反映されます。(“発行インフラストラクチャ” がアクティブでも非アクティブでも、検索結果に反映されるのは *.js ファイルに記述された内容です)表示テンプレートに加えたい変更を *.html ファイルで編集すると、通常の html ファイルの編集と同様に HTML や JavaScript、CSS を記述して編集できるので便利です。[既定の表示テンプレートのファイル名]SharePoint 既定のコントロール表示テンプレートのファイル名は “Control_”、フィルター表示テンプレートは “Filter_” で始まります。上の画像では、Control_Refinement がコントロール表示テンプレート、Filter_Default がフィルター表示テンプレートです。
[表示テンプレートのプロパティ]アイテムの [プロパティの編集] 画面より、既定のフィルター表示テンプレートの *.html ファイル (例 : 絞り込みアイテム) のプロパティを見てみましょう。アイテムのプロパティ ”コンテンツ タイプ” には、コントロール表示テンプレートではコントロール表示テンプレート、フィルター表示テンプレートではフィルタ��表示テンプレートを設定します。また、絞り込み Web パーツの表示テンプレートでは、“対象コントロールの種類 (検索)” に Refinement を設定します。さらに、フィルター表示テンプレートには、”互換性のある検索データの種類” の設定があります。これは、フィルター表示テンプレートを使用できる管理プロパティのデータの種類を選択します。例えば、テキストの管理プロパティで使用するフィルター表示テンプレートの場合は Text にチェックを入れ、日付と時刻の管理プロパティで使用するフィルター表示テンプレートの場合は DateTime にチェックを入れます。すべてのデータの種類の管理プロパティで表示テンプレートを使用する場合は、何もチェックを入れない状態にします。なお、これらのプロパティの設定は、表示テンプレートの *.html ファイル内に記載された mso:CustomDocumentProperties 要素配下と連携しています。*.html ファイルに設定を記述してアップロードするとプロパティの設定に反映され、反対に、プロパティの編集画面でプロパティの設定を行うと *.html ファイルに反映されます。<mso:CustomDocumentProperties><mso:CompatibleManagedProperties msdt:dt="string"></mso:CompatibleManagedProperties><mso:TemplateHidden msdt:dt="string">0</mso:TemplateHidden><mso:MasterPageDescription msdt:dt="string"></mso:MasterPageDescription><mso:ContentTypeId msdt:dt="string">0x0101002039C03B61C64EC4A04F5361F385106601</mso:ContentTypeId><mso:TargetControlType msdt:dt="string">;#Refinement;#</mso:TargetControlType><mso:HtmlDesignAssociated msdt:dt="string">1</mso:HtmlDesignAssociated></mso:CustomDocumentProperties>例) 絞り込み Web パーツで表示テンプレートを設定する絞り込み Web パーツで使用する表示テンプレートの設定方法を見ていきましょう。表示テンプレートの設定は、[Web パーツの編集] で行います。<コントロール表示テンプレート>[コントロール] 項目のプルダウンから、使用するコントロール表示テンプレートを選択し、設定します。<フィルター表示テンプレート>はじめに、[絞り込み条件の選択...] をクリックします。次に、[選択した絞り込み条件] 項目で該当の絞り込み条件を選択し、[表示テンプレート] 項目のプルダウンから使用するフィルター表示テンプレートを選択し、設定します。絞り込み条件として、更新日 (管理プロパティ LastModifiedTime) を例に、表示テンプレートによる表示の違いを見てみましょう。絞り込みアイテム (Filter_Default) の場合複数値の絞り込みアイテム (Filter_MultiValue) の場合棒グラフ付きスライダー (Filter_SliderBarGraph) の場合このように、どの表示テンプレートを設定するかで絞り込み Web パーツの使い勝手が変わってきますね。ご要件に合わせて、表示テンプレートの設定を行ってください。今回の投稿は以上です。次の投稿では、絞り込み Web パーツ用の表示テンプレートのカスタマイズについてご紹介していきます。検索のカスタマイズや設定に関する過去の投稿は以下の通りです。SharePoint 2013 表示テンプレートを編集して検索結果アイテムをグリッド テーブルで表示するSharePoint 2013 検索結果が何件目または何ページ目のアイテムであるかを表示するSharePoint 2013 検索結果のホバー パネルにカスタムのアクションを追加するSharePoint 2013 コントロール表示テンプレートを使用して検索結果アイテムの一覧表示のデザインを変更するSharePoint 2013 クエリ テキストを編集してドキュメントを対象とした検索を行うSharePoint 2013 検索ボックスの初期値を変更するSharePoint 2013 検索結果のファイルをクライアント アプリケーションで開くSharePoint 2013 検索結果で検索語句を強調するカスタマイズSharePoint 2013 コンテンツ検索 Web パーツでカスタムの管理プロパティを表示するSharePoint 2013 お知らせアイテムを新着順に表示するコンテンツ検索 Web パーツを作成するSharePoint 2013 サイトの表示言語に合わせて検索結果にプロパティ名を表示するSharePoint 2013 検索結果のホバー パネルをカスタマイズするSharePoint 2013 すべての検索結果の種類に共通する表示をカスタマイズするSharePoint 2013 アイテム表示テンプレートを使用して検索結果の表示をカスタマイズするSharePoint 2013 検索結果の表示を制御する表示テンプレート
こんにちは SharePoint サポートの森 健吾 (kenmori) です。
今回の投稿では、SharePoint サーバーから Office ファイルをクライアント アプリケーションを使用して開く際の動作について、その仕組みを簡単にご説明します。SharePoint からファイルを開く際の問題に直面した際には、是非トラブルシュートのヒントとしてご使用いただけますと幸いです。
近年 Office は、SharePoint ないしは Web サーバー上にあるファイルと積極的に連携するために、仕組みを増やしてきた経緯があります。ただし、ActiveX、Browser Helper Object をベースに実装しており、また Office という名前が連想しにくい名前であったりするため、特にセキュリティ ソフトなどが検出した際に、無意識に無効にする方も多いと思います。
無効化すると使用できなくなるだけで、それ以外の影響はありません。ただし、業務上必要なコンポーネントを無効化してしまい、ファイルが開けないといった問題を生じさせてしまうことは不本意ですので、簡単な情報公開をさせていただければと思います。
下記にて、SharePoint からファイルを開くにあたりブラウザーから呼び出される優先順位順を含めて、モジュール一覧をご紹介します。
本投稿の構成について
1. ProtocolHandler.exe
2. SharePoint OpenDocuments Class (OWSSUPP.DLL)
3. Office Document Cache Handler (URLREDIR.DLL)
これより、それぞれのコンポーネントの 1) 動作条件 2) 動作説明 3) 動作変更方法 4) よくあるお問い合わせ 5) 開発者向けの情報���してまとめ記載します。
SharePoint のライブラリなどのハイパーリンクから、Office ファイルを直接開く動作を実装しています。プロトコル (例. ms-word: ms-excel: 等) に対応し、ブラウザー プロセス外で Office ファイルを直接開くようにしたプログラムです。
1) 動作条件 (下記を双方満たす)
・Office 2010 SP2、Office 2013 以降
・SharePoint Server 2013 以降、SharePoint Online
2) 動作説明
SharePoint で表示されるドキュメントへのハイパーリンクのクリック イベントで、ファイル拡張子が対応しているプロトコルに合わせて URL (例. ms-word:ofv|u|http://sharepoint/Shared%20Documents/Document.docx) 先にナビゲートした場合に作動します。
レジストリに指定されたプロトコル ハンドラー定義を見てみましょう。ブラウザーは ms-word プロトコルに登録されたハンドラー (PROTOC~1.EXE) を実行するという動作です。
この仕組みでは、ProtocolHandler.exe という外部プログラムによって Office 連携を実装しております。ブラウザー内部でロードされませんので、セキュリティの観点においても優れた方法です。
3) 動作変更方法
SharePoint On-Premise のみ変更可能となりますが、拡張子に対するプロトコル ハンドラーの登録は、サーバー上の下記の XML ファイルで実施しています。
%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\15\TEMPLATE\XML\DocIcon.xml
この XML ファイルの設定値を (空欄などに) 書き換えて、IISRESET を実施するとクライアント側の動作を変更することができます。
4) よくある問い合わせ
同一端末に旧バージョンの Office 2007 (または Office 2010 RTM, SP1) とOffice 2013 ファミリー製品 (例. Visio, Project, SharePoint Designer 2013) を混在インストールした場合、ProtocolHandler.exe が Office 2007 と連携できないためエラーを出力する場合が想定されます。
この動作は、複数バージョンの Office を混在インストールした際の制限事項となります。
タイトル : Office 2007 または Office 2010 クライアント環境に、Office 2013 アプリケーションを単体でインストールした場合、 SharePoint Server 2013 上の Office ファイルが開けなくなる。
アドレス : http://support.microsoft.com/kb/2874782/ja
5) 開発者向け
プロトコルを接頭辞にした URL を参照先に指定するだけでクライアント アプリケーションとの連携が可能であるため、クライアントとの連携を実装しやすくなりました。
HTML
<a href="ms-word:ofv|u|http://sharepoint/Shared%20Documents/Document.docx">TITLE</a>
JavaScript
location.href = "ms-word:ofv|u|http://sharepoint/Shared%20Documents/Document.docx ";
SharePoint のライブラリなどのハイパーリンクから、Office ファイルを直接開く動作を実装しています。最も古くから存在する方法です。
1) 動作条件(下記を双方満たす)
・サポートされるすべてのバージョンの Microsoft Office
・サポートされるすべてのバージョンの SharePoint Server
SharePoint で表示されるドキュメントへのハイパーリンクのクリック イベントで、onclick イベントの引数に渡されたファイルの拡張子や ProgId などを見て起動します。
Microsoft Office が提供しているものは SharePoint.OpenDocuments というクラス ID であり、JavaScript によって Active X がロードされ、ブラウザープロセス内部で Office ファイルをサーバーから直接開く処理が実行されます。
3-1) 動作変更方法 (クライアント)
Internet Explorer より [ツール] – [アドインの管理] をクリックすると、下記のように表示されます。
ここで、Active X を無効にすると、コントロール クラスがロードできなくなるため、この仕組みが動かなくなります。
3-2) 動作変更方法 (SharePoint Server)
SharePoint On-Premise のみ変更可能となりますが、SharePoint で表示されるドキュメントへのハイパーリンクのクリック イベントでは、1. ProtocolHandler.exe と同様、DocIcon.xml に記載されたファイル拡張子が対応している OpenControl を ActiveX としてロードします。
タイトル : DocIcon.xml ファイルについて
アドレス : http://msdn.microsoft.com/ja-jp/library/ms463701(v=office.14).aspx
4) よくあるお問い合わせ
Microsoft SharePoint Foundation サポートがインストールされている必要があります。
仕組み 1. protocolhandler.exe と 2 SharePoint OpenDocuments コントロールは、このコンポーネントをインストールしていない環境では動作しません。
カスタム Web サイトなどから、JavaScript を使用して、このモジュールを呼び出したい場合は、下記のようなコードになります。
var stsopen = new ActiveXObject("SharePoint.OpenDocuments");
// 閲覧モードの場合
stsOpen.ViewDocument("http://sharepoint/Shared%20Documents/Document.docx", null);
// 編集モードの場合
stsOpen.EditDocument("http://sharepoint/Shared%20Documents/Document.docx", null);
通常のハイパーリンク クリック時に、ナビゲーション先のファイルをサーバーから直接開くよう動作します。
・Microsoft Office 2010 以降
・サポートされるすべてのバージョンの SharePoint Server、およびDAV, MS-FSSHTTP に対応したサーバー
SharePoint サーバー上のファイルへのリンクをクリックした場合、おそらく上記 1. 2. までの処理で、サーバーから直接開く処理が実行されていると思います。ただし、下記のようにいくつかの例外があり、下記のリンクには JavaScript の onclick イベントが付与されていません。
・ユーザーがリッチテキスト エディターなどに張り付けたハイパーリンク (例. <A HREF="http://sharepoint/Shared%20Documents/Document.docx">TITLE</A>) をクリックした場合
・Outlook などから、メールに記載されたハイパー リンクをクリックした場合
・ドキュメントへのリンクを右クリックし、[新しいタブで開く]や [新しいウインドウで開く] をクリックした場合
・ブラウザーのアドレスバーにドキュメントへの URL を直接入力した場合
上記操作の場合、スクリプトが実行されないため 通常は SharePoint 側が意図してファイルの開き方を指定することはできません。ここで紹介する中で、唯一 SharePoint Server の設定に関係なく動作する Office 側のモジュールです。
このモジュールは、IE の Browser Helper Object (BHO) として実装されています。IE 内部でトリガーされるナビゲーションイベント (BeforeNavigate イベント) をフックして、DAV または MS-FSSHTTP に対応したサーバー (※) であると判断した場合はファイルを直接開きます。
注意
動作対象の拡張子 (docx, doc, odt, pptx, ppt, ppsx, odp, xlsx, xls, ods) がハードコードされています。
よくあるお問い合わせとして、xlsm は動作対象から除外されており、直接サーバーから開かれませんので、ご注意ください。
このモジュールの役割は、主にサーバーから直接開くことです。Office Document Cache Handler と名前がついていますが、モジュール名である URLREDIR.DLL という名前のほうが実装内容に合致しています。実際にドキュメント キャッシュを扱って、サーバーとの通信量を削減する処理を実施しているのは Office クライアント アプリケーション本体です。ただし、ファイルを直接開くことがドキュメント キャッシュを使用することの条件であり、このモジュールはその動作を実現するためのハンドラーということになります。
初回と次回以降の細かな動作の違い
サーバー側の WebDAV、MS-FSHTTP への対応状況が判断できない場合、最初はダウンロードして開きます。Web フォルダ (ドキュメント ライブラリやアイテムごとの添付ファイル等) 単位で WebDAV、MS-FSHTTP への対応が確認できた時点で下図のようにレジストリ キー (HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Common\Internet) に値 EnableBHO = 1 が登録されます。このキーが存在する Web フォルダ内のファイルのみ、ハイパーリンクをクリックした際にはサーバーから直接ファイルを開くように動作します。そのため、Web フォルダごとに最初はダウンロード、次からは直接開くといった動作となりますため、全体的に見てこの仕組みが動いたり動かなかったりという印象を持つ方も多いと思います。
なお、下記のレジストリ キーを変更した際には、上記の様に一度実績がある Web フォルダのみ開くという動作をやめ、最初からサーバーより直接開いてみる動作となります。
キー : HKEY_CURRENT_USER\Software\Microsoft\Office\<version>\Common\Internet\
値の名前 : OptimisticBHO
値の種類 : REG_DWORD
値のデータ : 1
3) 動作変更方法 (クライアント)
IE のアドオンの管理でも、有効、無効を制御できます。
IE のバージョンにより、既定で無効にされており、サーバーから開けない場合があります。詳しくは下記をご参考にしてください。
タイトル : Office 2010 - Performance and Caching Add-on Disabled by Default in Internet Explorer 9
アドレス : http://support.microsoft.com/kb/2463597
なお、すでに上記しましたが、xlsm は対応していません。
特に開発者向けの情報はありません。
(補足※)
このコントロールは、SharePoint Server以外にも対応しています。例えば IIS の WebDAV 発行機能などにも対応しています。
また、記載した MS-FSSHTTP プロトコルは、SharePoint 2010 以降で追加された既定で有効化された通信手法であり、cellstorage.svc として実装されております。
ドキュメント キャッシュを使用してサーバーとの通信量を減らすためのプロトコルです。
下記の設定で有効化状況を制御できます。
タイトル : SPWebApplication.CellStorageWebServiceEnabled property
アドレス : http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.cellstoragewebserviceenabled(v=office.15).aspx
タイトル : [MS-FSSHTTP]: File Synchronization via SOAP over HTTP Protocol
アドレス : http://msdn.microsoft.com/en-us/library/dd943623(v=office.12).aspx
いかがでしたでしょうか。今回の投稿は以上となります。
こんにちは。 SharePoint サポート チームの成田です。今回は SharePoint Server 2013 の分散キャッシュ サービスのエラーの対処方法ついて記載したいと思います。 SharePoint Server 2013 から [分散キャッシュ サービス] というサービスが新たに増えたことはご存知の方も多いと思います。 この分散キャッシュ サービスは、Security Token Service が発行したトークンやニュース フィードの情報など、ファーム内の複数の SharePoint サーバーで共通して使用され、かつ頻繁にアクセスされる情報をキャッシュする際に使用されます。 分散キャッシュ サービスにキャッシュされる情報については下記の Technet をご確認ください。SharePoint Server 2013 のミニブログ機能、フィード、分散キャッシュ サービスの概要 http://technet.microsoft.com/ja-jp/library/jj219700(v=office.15).aspx分散キャッシュは Windows Server の機能である AppFabric キャッシュ サービス (SharePoint Server 2013の前提条件と共にインストールされます) をベースとしており、各分散キャッシュ サーバーはキャッシュ ホストの役割を持ち、キャッシュ ホストはキャッシュ クラスターを構成しています。(SharePoint の "ファーム" とは別の概念です) このような分散キャッシュ サービスですが、構成に失敗する事例が多く報告されており、イベント ログや診断ログに大量のエラーが記録されることがありますのでご注意ください。 例えば、下記のようなエラーが記録されます。(これ以外であっても、エラーに分散キャッシュ、AppFabric、Velocity などのキーワードがある場合は分散キャッシュ関連のエラーと考えて問題ありません。)
【Application】 -----ソース:Application ErrorイベントID:1000レベル:エラーユーザー:N/AEventData:"障害が発生しているアプリケーション名: DistributedCacheService.exe、バージョン: 1.0.4632.0、タイムスタンプ: 0x4eafeccf障害が発生しているモジュール名: KERNELBASE.dll、バージョン: 6.1.7601.17965、タイム スタンプ: 0x506dcae6例外コード: 0xe0434352障害オフセット: 0x000000000000bccd障害が発生しているプロセス ID: 0x141c障害が発生しているアプリケーションの開始時刻: 0x01ce34ce54006afa障害が発生しているアプリケーション パス: C:\Program Files\Windows Server 用 AppFabric 1.1\DistributedCacheService.exe障害が発生しているモジュール パス: C:\Windows\system32\KERNELBASE.dllレポート ID: b49c6901-a0c2-11e2-97c3-00155def6442"----------ソース:.NET RuntimeイベントID:1026レベル:エラーユーザー:N/AEventData:"Application: DistributedCacheService.exe Framework Version: v4.0.30319Description: The process was terminated due to an unhandled exception.Exception Info: Microsoft.ApplicationServer.Caching.DataCacheExceptionStack: at Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch()"-----【Microsoft-Windows-Application Server-System Services/Admin】-----エラー 2014/05/14 18:08:05 Microsoft-Windows Server AppFabric Caching 111 (1) "例外により AppFabric キャッシュ サービスがクラッシュしました {Microsoft.ApplicationServer.Caching.DataCacheException: ErrorCode<ERRService0001>:SubStatus<ES0001>:サービスを初期化できませんでした。ユーザー操作は不要です。 ---> Microsoft.Fabric.Common.OperationCompletedException: Operation completed with an exception ---> System.TimeoutException: 操作がタイムアウトしました。 --- 内部例外スタック トレースの終わり --- 場所 Microsoft.Fabric.Common.OperationContext.End() 場所 Microsoft.Fabric.Common.SharedCommunicationObject.EndOpen(IAsyncResult result) 場所 Microsoft.Fabric.Federation.FederationSite.EndOpen(IAsyncResult result) 場所 Microsoft.Fabric.Data.ReliableServiceManager.EndOpen(IAsyncResult ar) 場所 Microsoft.ApplicationServer.Caching.DOMNode..ctor(Int32 id, String displayFriendlyNodeId, Int32 port, EndpointID[] urisDOM, ServiceConfigurationManager configurationManager, ReliableServiceProvider dataStore, ServiceResolverBase& client) --- 内部例外スタック トレースの終わり --- 場所 Microsoft.ApplicationServer.Caching.DOMNode..ctor(Int32 id, String displayFriendlyNodeId, Int32 port, EndpointID[] urisDOM, ServiceConfigurationManager configurationManager, ReliableServiceProvider dataStore, ServiceResolverBase& client) 場所 Microsoft.ApplicationServer.Caching.DistributedObjectManager..ctor(EndpointID[] urisDOM, ServiceConfigurationManager configurationManager, WcfServerChannel channel) 場所 Microsoft.ApplicationServer.Caching.DistributedObjectManager.GetInstance(EndpointID[] urisDOM, ServiceConfigurationManager configurationManager, WcfServerChannel channel) 場所 Microsoft.ApplicationServer.Caching.ServiceLayer.ServiceStart(Boolean deleteTkt) 場所 Microsoft.ApplicationServer.Caching.DataCacheServiceBase.ServiceStart(ServiceConfigurationManager scm, Boolean deleteTkt) 場所 Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartService(Boolean deleteTKT) 場所 Microsoft.ApplicationServer.Caching.VelocityWindowsService.StartServiceCallback(Object context) 場所 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 場所 System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 場所 System.Threading.ThreadPoolWorkQueue.Dispatch()}。詳細についてはデバッグ ログを確認してください"-----また、構成情報に不整合が発生している場合、分散キャッシュ サービスを開始しようとすると Application イベント ログ���以下のエラーが出力されて失敗することもあります。----- ソース:Microsoft-SharePoint Products-SharePoint Foundation イベントID:7034 レベル:重大 ユーザー:<分散キャッシュ サービスの実行アカウント> EventData: サーバー <分散キャッシュ ホスト> でサービス 分散キャッシュ のインスタンスを開始または停止できませんでした。指定されたサーバーで UI またはコマンド ラインを使用して処理を再実行してください。詳細は以下を参照してください。
cacheHostInfo is null-----分散キャッシュの構成に失敗する多くのケースで、キャッシュ ホスト間の通信に問題が発生していることが報告されています。 そのため、前述のようなエラーが記録される場合は、分散キャッシュ サービスの実行アカウントがキャッシュ ホスト間で必要なポートを使用して通信できるように構成することで回避する可能性があります。 下記に分散キャッシュ サービスに必要なネットワーク要件を満たし、サービスを再構成する手順を記載します。分散キャッシュ サービスの再構成手順====================================1. ファーム アカウントの IE のプロキシの構成を変更する2. Windows ファイアウォールを構成する3. 分散キャッシュ ホストをファームから削除する4. 分散キャッシュ ホストを再構成する
1. ファーム アカウントの IE のプロキシの構成を変更する ------------------------------------------------------- 分散キャッシュ サービスの実行アカウントは既定ではファーム アカウントが担当します。 ファーム アカウントがインターネットへプロキシ経由で通信を行えない場合、分散キャッシュ サービスを開始できない事例がありますので、下記の手順でファーム アカウントの IE のプロキシを予めオフに設定してください。 なお、分散キャッシュ サービスのアカウントをファーム アカウントから変更している場合には、変更後のアカウントに対して下記の手順をご実施ください。
1) 任意の SharePoint サーバーにファーム アカウント (SharePoint Timer Service の実行アカウント) でログオンし、IE を開始します。 2) [ツール] - [インターネット オプション] の順にクリックします。 3) インターネット オプションの設定で [接続タブ] タブをクリックし、[LAN の設定] をクリックします。 4) すべてのチェック ボックスがオフであることを確認します。オフでない場合にはオフにして [OK] をクリックして IE を閉じます。 5) 管理者権限で開始したコマンドプロンプトで以下のコマンドを実行します。
> netsh winhttp show proxy
6) コマンドの実行結果が "直接アクセス (プロキシ サーバーなし)" と表示されていることを確認します。 7) 異なる結果が表示されている場合は以下のコマンドを実行します。(プロキシを使用しない設定をインポートします)
> netsh winhttp import proxy source=ie
8) 再度手順 5) を実施して結果が "直接アクセス (プロキシ サーバーなし)" と表示されることを確認します。 9) 残りのすべての SharePoint サーバーで上記の手順を実施します。2. Windows ファイアウォールを構成する -------------------------------------- キャッシュ ホストとして構成する SharePoint Server 2013 上で、コマンド プロンプトまたは PowerShell を管理者権限で起動し、下記のコマンド (2 行) を実行します。
netsh advfirewall firewall set rule group="AppFabric Server: AppFabric キャッシュ サービス" new enable=Yes netsh advfirewall firewall set rule group="リモート サービス管理" new enable=Yes
上記のコマンドを実行することで、分散キャッシュ サービスの動作に必要な下記の Windows ファイアウォールのルール 5 つが有効化されます。----- 受信の規則 ・AppFabric キャッシュ サービス (TCP-In) ・リモート サービス管理 (NP 受信) ・リモート サービス管理 (RPC) ・リモート サービス管理 (RPC-EPMAP)
送信の規則 ・AppFabric キャッシュ サービス (TCP-Out) -----また、サードパーティのファイアウォールを導入されている場合には、分散キャッシュ ホスト間の通信で TCP 22233 - 22236 および ICMP を許可するように構成されていることをご確認ください。 分散キャッシュ サービスで使用されるポートについては下記の Technet に記載されております。
SharePoint Server 2013 でフィードおよび分散キャッシュ サービスを計画する http://technet.microsoft.com/ja-jp/library/jj219572.aspx#firewall ----- ファイアウォール構成の考慮事項 分散キャッシュ サービスは、次の通信ポートを使用します。
•22233 •22234 •22235 •22236サーバー ファーム内で複数のキャッシュ ホストを使用している場合は、分散キャッシュ サービスを実行している最初のキャッシュ ホストを、ファイアウォール経由の受信 ICMP (ICMPv4) トラフィックを許可するように構成する必要があります。詳細については、「Windows 7、Windows Vista、Windows Server 2008、または Windows Server 2008 R2 で受信 ICMP ルールを作成する」を参照してください。管理者が、ファイアウォール経由の受信 ICMP (ICMPv4) トラフィックを許可するように構成された最初のキャッシュ ホストをクラスターから削除する場合は、新しいクラスターの最初のサーバーを、ファイアウォール経由の受信 ICMP (ICMPv4) トラフィックを許可するように構成する必要があります。 -----キャッシュ ホストとして構成する SharePoint Server 2013 上で必要なポートが開いているかを確認するには下記の手順をご実施ください。1) 下記の URL より PortQryUI.exe をダウンロードし、全ての分散キャッシュ サーバーにコピーします。http://download.microsoft.com/download/3/f/4/3f4c6a54-65f0-4164-bdec-a3411ba24d3a/PortQryUI.exe2) 各分散キャッシュ サーバー上で PortQryUI.exe をダブルクリックして実行します。 3) ライセンス アグリーメントを確認し、[Yes] をクリックします。 4) 任意のパス (例: C:\PortQryUI) を指定して [Unzip] をクリックして解凍します。 5) 各分散キャッシュ サーバー上で管理者権限でコマンド プロンプトを開始し、手順 4) で指定したパスに移動します。 6) 各分散キャッシュ サーバー上で、全ての分散キャッシュ サーバーに対して下記のコマンドを実行します。
PortQry.exe -n <分散キャッシュ サーバー名> -e 22233 PortQry.exe -n <分散キャッシュ サーバー名> -e 22234 PortQry.exe -n <分散キャッシュ サーバー名> -e 22236
7) コマンドを実行した結果、全てのコマンドの実行結果が下記のように [LISTENING] で返されることをご確認ください。[LISTENING] 以外の結果が返る場合にはポートが閉じられておりますので、サードパーティのファイアウォールを含め、ルールを再度ご確認ください。
----- Querying target system called:
<分散キャッシュ サーバー名>
Attempting to resolve name to IP address...
Name resolved to <IP アドレス>
querying...
TCP port <ポート番号> (unknown service): LISTENING -----3. 分散キャッシュ ホストをファームから削除する ----------------------------------------------- 下記手順で一度分散キャッシュ ホストをキャッシュ クラスターから削除します。1) 任意の分散キャッシュ サーバーに管理者アカウントでログオンし、[SharePoint 2013 管理シェル] を管理者権限で開始します。 2) 以下のコマンドを実行してサービス インスタンスを削除します。> Remove-SPDistributedCacheServiceInstance3) 残りのすべての分散キャッシュ サーバーで上記のコマンドを実行します。 4) SQL Server に管理者アカウントでログオンし、SQL Server Management Studio を開始してデータベース インスタンスに接続します。 5) [新しいクエリ] をクリックし、クエリ ウィンドウに下記を入力して [実行] をクリックします。
--- USE <構成データベース名> SELECT * FROM CacheClusterConfig WHERE EntryType = 'hosts'; SELECT * FROM Objects WHERE Properties LIKE '%SPDistributedCacheServiceInstance%'; SELECT * FROM Objects WHERE Properties LIKE '%SPDistributedCacheHostInfo%'; ---例 --- USE SharePoint_Config SELECT * FROM CacheClusterConfig WHERE EntryType = 'hosts'; SELECT * FROM Objects WHERE Properties LIKE '%SPDistributedCacheServiceInstance%'; SELECT * FROM Objects WHERE Properties LIKE '%SPDistributedCacheHostInfo%'; ---6) 結果ウィンドウに結果が何も表示されないことを確認します。
※結果が表示される場合は分散キャッシュ サービスの構成情報が適切に削除されておりませんので、下記の手順を実施してください。 6-a) すべての分散キャッシュ サーバーの [SharePoint 2013 管理シェル] で下記のコマンドを実行します。
> $instanceName ="SPDistributedCacheService Name=AppFabricCachingService" > $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername} > $serviceInstance.Delete()6-b) SQL Server Management Studio で手順 5) のクエリを実行します。 6-c) 結果ウィンドウに結果が何も表示されないことを確認します。4. 分散キャッシュ ホストを再構成する ------------------------------------- 前述の手順でファーム内から正常に分散キャッシュ ホストを削除できたことを確認し、下記の手順で再構成します。1) 分散キャッシュ サービスを開始させる任意の SharePoint サーバーに管理者アカウントでログオンし、[SharePoint 2013 管理シェル] を管理者権限で開始します。 2) 以下のコマンドを実行してサービス インスタンスを追加します。
> Add-SPDistributedCacheServiceInstance
3) 分散キャッシュ サービスを開始させる残りのすべての SharePoint サーバーで上記のコマンドを実行します。 4) 任意の SharePoint サーバーで下記のコマンドを順に実行し、すべての分散キャッシュ ホストの Status が Online であることを確認します。
> $instanceName ="SPDistributedCacheService Name=AppFabricCachingService" > $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName} > $serviceInstance
5) 分散キャッシュ サービスを開始させる任意の SharePoint サーバーで下記のコマンドを順に実行し、サービス インスタンスを開始します。
> $instanceName ="SPDistributedCacheService Name=AppFabricCachingService" > $serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($_.server.name) -eq $env:computername} > $serviceInstance.Provision()
6) 分散キャッシュ サービスを開始する残りのすべての SharePoint サーバーで上記のコマンドを実行します。 7) 任意の 1 台の SharePoint サーバーで下記のコマンドを実行し、すべての分散キャッシュ ホストの Status が Online であることを確認します。
8) 任意の SharePoint サーバーで下記のコマンドを順に実行し、すべての分散キャッシュ ホストの Service Status に UP を表示されていることを確認します。
> Use-CacheCluster > Get-CacheHost
※コマンドの結果が表示されるまでに時間がかかり、Status が UNKNOWN と表示される場合は分散キャッシュ サービスの構成が完了していませんので、10 分程度待ってから再度上記のコマンドを実行してください。
<参考> 分散キャッシュ サービスを管理する (SharePoint Server 2013) http://technet.microsoft.com/ja-jp/library/jj219613(v=office.15).aspx上記の手順をご実施いただき、ファーム内の全ての SharePoint サーバーで分散キャッシュ関連のエラーが解消されるかをご確認ください。
いかがでしたでしょうか。 分散キャッシュ サービス関連のエラーが記録されている場合にはご参考くださいますと幸いです!
こんにちは。 SharePoint サポート チームの成田です。今回は SharePoint Server 2010 および 2013 において、サイトのユーザー情報 (表示名、メール アドレス) を複数ユーザー分まとめて最新の情報に更新する方法について書きたいと思います。 サイトのユーザー情報は SharePoint のプロファイルから同期されますが、プロファイルの情報が正しくない場合や、プロファイルからサイトへの同期が正しく動作していない場合は、サイトの情報が期待したデータにならないことがあります。 サイトへのユーザー情報 (プロファイル) の同期の詳細については下記のブログで紹介されていますのでご確認ください。(かなり詳しく書かれています)サイト コレクションのユーザー情報へのユーザー プロファイル同期の仕組みについて (まとめ)http://blogs.technet.com/b/sharepoint_support/archive/2013/11/10/3608500.aspxサイトのユーザー情報が古いままだと、サイト上部に表示される自分の名前が古いままだったり、リストに通知を設定してもメール アドレスが古いため通知が届かなかったりする現象が発生します。 しかるべき設定を行っておけば [AD -> プロファイル -> サイト] の順に情報が更新され、ある程度の時間が経てば最新の情報が更新されるはずなのですが、「すぐに更新したい!」「同期に問題が発生しているため暫定回避したい!」などの場合には、サイトの情報を直接更新することが可能です。(プロファイル機能は SharePoint Server の機能ですので、SharePoint Foundation では特に有効ですね。) 具体的には Set-SPUser コマンドを使用するのですが、今回は “全てのサイト” の “全てのユーザー” の情報を、最新の AD 上の表示名とメールアドレスの情報に一括で更新するスクリプトをご紹介します。サンプル スクリプト--------------------------下記のテキストを拡張子 ps1 のファイル (例: script.ps1) として保存し、PowerShell から実行します。ハイライトされている部分を実際のドメイン名に置き換えてください。(システム アカウントなどの更新が不要なアカウントに対してコマンドが実行させない目的でドメイン名を指定します)-----Add-PSSnapIn Microsoft.SharePoint.PowerShell -ea silentlycontinue$domain = "contoso"$sites = Get-SPSiteforeach ($web in $sites.AllWebs){ Write-Host ("--- " + $web.url + " ---") $users = $web.AllUsers foreach($user in $users) { if($user.userlogin -match $domain) { Write-Host ($user.userlogin + " を更新中...") Set-SPUser $user.UserLogin -web $web.Url -SyncFromAD } } Write-Host ("")}-----なお、上記のコマンド、スクリプトで更新される情報は表示名とメール アドレスだけです。 Set-SPUser コマンドで更新できる情報がこれらの情報に限られることがその理由です。 もし、電話番号、部署、上司などのその他のプロパティを更新したい場合は、各サイトの “ユーザー情報リスト” と呼ばれるリストのアイテムを更新する必要があり、これを自動化するには高度なスクリプティングが必要になります。 下記のブログでは AD から最新の情報を取得してユーザー情報リストを更新するスクリプトの例が紹介されているようです。http://www.hornerit.com/2012/12/sharepoint-2010-foundation-user-profile.html前述しましたが、通常は [AD -> プロファイル -> サイト] の順に情報が更新されるため、あまり意識しなくてもユーザー情報は更新されることも多いと思います。 もし期待したとおりに同期されない場合には問題を解決する必要がありますが、取り急ぎ回避したい時などにご活用ください!
こんにちは。江口です。今回は、SharePoint Online/SharePoint Server 2013 (オンプレミス) で、SharePoint Desinger ワークフロー (SPD ワークフロー) 作成する際のエラーについてご案内します。
業務フローに合わせて複雑な SPD ワークフローを作成した場合、ワークフロー発行の際に以下のエラーメッセージが表示される場合があります。
エラーメッセージ:
ワークフローのコンパイル中にエラーが発生しました。ワークフロー ファイルは保存されましたが、実行することはできません。
ワークフローに関連するサーバーで、不明なエラーが発生しました。
このエラーについて、原因と各環境における対処方法を記載します。
原因
上記エラーは、下記 2 つの要因に該当する場合に表示されます。
要因 1) ワークフローの複雑さ (Workflow Complexity) の制限値を超過している場合
要因 2) ASP.NET の最大実行時間を超過している場合
それぞれの要因について以下に詳細を記載します。
SharePoint では、SPWebApplication.UserDefinedWorkflowMaximumComplexity プロパティが用意されており、ワークフローの複雑さに対して制限が設定されています。
SPD ワークフローはユーザーが自由に作成できる利便性があります。
しかし、処理が複雑なワークフローを運用した場合、SharePoint 全体のパフォーマンスに影響が及ぶ可能性があります。
そのため、SharePoint では既定の設定で、高負荷な処理がサーバー上で実行され続けた場合の深刻な障害を未然に防ぐ目的で、作成できるワークフローの複雑さに制限を設けています。
なお、ワークフローの複雑さは各ワークフローが対象であり、1 つのワークフローに含まれているアクションの数などによって算出されます。
ワークフローの発行時の処理は、その他の処理に比べて処理に時間が掛かり、ASP.NET の最大実行時間 (executionTimeout) を超過する場合があります。
最大実行時間は既定では110 秒に設定されていますが、ネットワーク環境によってはこの設定時間を超過する場合があります。
上述した原因を踏まえたうえで、下記に各環境における対処方法を記載します。
対処方法
SharePoint Online 環境における対処方法
作成した SPD ワークフローの構成を見直し、ワークフローの分割や単純化が適切な対処方法です。
ワークフローを分割する利点として、ワークフローが失敗した場合などにビジネス プロセスへの影響を抑えるメリットがあります。詳細については、以前の森さんの投稿 (内部エラー (WinWF Internal Error) 発生を想定したSharePoint ワークフローをデザインする) を合わせてご覧ください。
なお、SharePoint Online では、上述した各設定値を変更することができません。
SharePoint Server 2013 環境 (オンプレミス) における対処方法
はじめに、上述した SharePoint Online 環境における対処方法と同様に、可能な限り SPD ワークフローの構成を見直すことが望ましい対処方法です。
しかしながら、ユーザーの業務上 1 つのワークフローで行いたいロジックがある場合は、以下の各設定値を変更することで対処できます。
それぞれの設定値の変更方法を記載します。
注意事項
本プロパティに限らず SharePoint 製品ではパフォーマンスのテストや調整したうえで、各プロパティの既定値を設定していますので、可能な限り既定値のまま利用することを弊社は推奨しています。
しかし、お客様の業務上プロパティの値を変更する必要がある場合は、SharePoint ファーム環境のパフォーマンスへの影響を考慮し、予め十分な検証を実施いただいたうえで変更してください。
変更方法 1) ワークフローの複雑さ (Workflow Complexity) の制限値の変更方法
以下の手順にて、特定の Web アプリケーションの SPWebApplication.UserDefinedWorkflowMaximumComplexity プロパティの値を変更することができます。
UserDefinedWorkflowMaximumComplexity プロパティの既定値は 7000 に設定されています。
- 手順
$webapp = get-spwebapplication http://sitecollection/
$webapp.UserDefinedWorkflowMaximumComplexity = 10000
$webapp.Update()
補足:
UserDefinedWorkflowMaximumComplexity プロパテ��の値はお客様の環境に合わせて適宜変更してください。上記変更例では 10000 に変更しています。
SPWebApplication.UserDefinedWorkflowMaximumComplexity プロパティの詳細については、以下の技術情報を参照してください。
タイトル : SPWebApplication.UserDefinedWorkflowMaximumComplexity property
アドレス : http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.userdefinedworkflowmaximumcomplexity(v=office.15).aspx
変更方法 2) ASP.NET の最大実行時間の変更
以下の手順にて、特定の Web アプリケーションの ASP.NET の最大実行時間を変更することができます。
executionTimeout 属性の既定値は 110 秒に設定されています。
1. SharePoint サーバーにアクセスします。
2. Windows エクスプローラーで、以下のフォルダ配下にアクセスし、予め web.config のバックアップを作成しておきます。
C:\inetpub\wwwroot\wss\VirtualDirectories\<<ワークフローを発行するサイトの Web アプリケーション ポート番号>>
例) C:\inetpub\wwwroot\wss\VirtualDirectories\80
3. フォルダ内にある web.config をテキスト エディタで開きます。
4. 以下の該当箇所を変更します。
該当箇所 (既定では 527 行目)
--------
<httpRuntime maxRequestLength="51200" requestValidationMode="2.0"/>
変更後
<httpRuntime maxRequestLength="51200" requestValidationMode="2.0" executionTimeout="300"/>
変更後の例 (前後の記述を含む)
------
<system.web>
<httpHandlers />
<customErrors mode="On" />
<authentication mode="Forms">
<forms loginUrl="/_login/default.aspx" />
</authentication>
executionTimeout プロパティの値はお客様の環境に合わせて適宜変更してください。上記変更例では 300 (秒) に変更しています。
5. 変更した web.config を保存します。
ExecutionTimeout プロパティの詳細につきましては、以下の技術情報を参照してください。
タイトル : HttpRuntimeSection.ExecutionTimeout プロパティ
アドレス : http://msdn.microsoft.com/ja-jp/library/system.web.configuration.httpruntimesection.executiontimeout(v=vs.100).aspx
こんにちは。 SharePoint サポート チームの成田です。今回は SharePoint Server 2010 および 2013 において、診断ログと呼ばれるログを “詳細レベル” で出力させる方法について記載したいと思います。(既に SharePoint に慣れ親しんでいる方には既知ネタかもしれません。) SharePoint 関連のサービスやプロセス (ワーカー プロセス、タイマー サービス、検索サービスなど) は何らかの処理を行うと、診断ログと呼ばれるテキスト ファイルに処理内容やエラーを記録していきます。 既定では警告やエラーを中心とした比較的重要なイベントのみが記録されるようになっていますが、「検索結果が表示されない!」「人の検索ができない!」のような「エラーは発生しないけど動作が変」である場合には、細かな処理についてもログを残すことで SharePoint の処理を詳細に追跡し、原因を特定できる可能性があります。 もちろん、エラーが発生するような場合 (多くの場合は問題が発生するとエラーが発生します) は、詳細にせずとも既定のレベルの診断ログから非常に有効な情報を取得できますので、必ずしも詳細に設定する必要がありませんが、今回はトラブルシューティングの Tips としてご紹介します。
SharePoint Server 2010 および 2013 において診断ログを詳細にして調査する流れ ==============================================================1. 現在のログの出力レベルの保存 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 本手順はログの出力レベルが既定値から変更していない場合は不要です。ログの出力レベルを変更している場合には、あとで変更前の出力レベルを参照するために本手順をご実施ください。 本手順で使用する Out-GridView コマンドレットを使用するには Windows PowerShell ISE のインストールが必要です。Windows Server 2012 では既定で有効ですが、2008 R2 では [機能の追加] ウィザードからインストールする必要がありますのでご注意ください。Windows PowerShell ISE をインストールしない場合は、Out-GridView を使用する代わりに、"Get-SPLogLevel | select area,localizedname,tracesev,eventsev" コマンドを実行することでログの出力レベルを一覧で確認可能です。
1) SharePoint サーバーで [SharePoint 2010 管理シェル] を管理者権限で実行します。 2) 以下のコマンドを実行します。>Get-SPLogLevel | Out-GridView3) 表示されたグリッド ビューを全選択してコピーし、Excel などに張り付けてファイルとして保存します。2. ログ出力レベルの変更^^^^^^^^^^^^^^^^^^^^^^^^ 1) SharePoint サーバーで以下のコマンドを実行します。以下のコマンドによってログの出力レベルを詳細に設定します。>Set-SPLogLevel -TraceSeverity VerboseEx -EventSeverity Verbose※上記のコマンドで診断ログの出力レベルを最も詳細 (VerboseEx) に設定していますが、サーバーの全体管理サイトの下記の URL にアクセスし、[トレース ログの記録対象となる重要度の最も低いイベント] ドロップダウンで VerboseEx を選択することでも同じ設定が可能です。(URL の後ろに ?verboseex=true をつけるのがポイントです)http://<CentralAdminSiteUrl>/_admin/metrics.aspx?verboseex=true3. ログの採取 ^^^^^^^^^^^^^^ 1) SharePoint サーバーで以下のコマンドを実行します。以下のコマンドによって診断ログのファイルが新しいファイルに切り替わります。>New-SPLogFile※New-SPLogFile は必須ではありませんが、現象の発生手順が予め分かっている場合には、ログ ファイルを切り替えることでファイル サイズを小さくし、解析を容易にすることができます。2) 調査対象の現象を再現させます。 3) 再度、SharePoint サーバーで [New-SPLogFile] コマンドを実行します。 4) 以下のフォルダに出力された、現象発生時の診断ログから調査します。(エクスプローラーの "更新日時" 列でソートして対象のファイルご確認ください)<診断ログの既定の保存場所> パス :C:\Program Files\Common Files\Microsoft Shared\web server extensions\14\LOGS ファイル名:<サーバー名>-<日付>-<時間>.log4. ログ出力レベルの復元 ^^^^^^^^^^^^^^^^^^^^^^^^ 1) SharePoint サーバーで以下のコマンドを実行します。以下のコマンドによって診断ログの出力レベルが既定値に設定されます。> Clear-SPLogLevel補足: 上記コマンドによってログの出力レベルは既定に設定されます。個別にレベルを修正されている場合は手順 1. で取得した情報を参考に、サーバーの全体管理サイトの [監視] - [診断ログの構成] から設定を変更するか、以下のコマンドを使用して個別に設定を行います。Set-SPLogLevel http://technet.microsoft.com/ja-jp/library/ff607887.aspx5. ログの調査 ^^^^^^^^^^^^^ 診断ログはテキスト ファイルなので、メモ帳などの任意のテキスト エディタで開くことができます。 しかし、ログの量が多くなると目視で調査を行うのが大変になるので、診断ログを調査するためのツールを使うと便利です。 例えば、このようなツールが公開されています。
http://ulsviewer.codeplex.com/ http://sharepointlogviewer.codeplex.com/
ログを調査するには、まずは現象を特定するためのキーワード (エラー メッセージ、ページ URL など) で検索をし、現象に関連するログを特定できたら関連付け ID (CorrelationID) でフィルタすると素早く関連のログを確認できます。特にエラーが出力されていない場合には解析が難しくなりますが、その場合は正常時との比較調査が有効です。最後に ======== SharePoint は非常にたくさんのテクノロジ (Windows、AD、Network、IIS、.NET Framework、SQL Server、IE、Office Client など) によって構成され、たくさんの機能 (ポータル、ライブラリ、検索、ディレクトリ同期、外部システムとの連携など) が提供されており、そのトラブルシューティングも大変と思われがちです。 それは多くの場合正しく、調査が困難を極めることもありますが、診断ログからは非常にたくさんの有効な情報を取得できるので診断ログからすぐに原因を特定できることも少なくありません。特にバージョンが新しくなるにつれますますログが充実し、トラブルシューティングをしやすくなっているという状況もあります。 もし、運悪く問題に遭遇したら、SharePoint の診断ログ (既定のレベルでも十分にトラブルシューティングが可能です) を開き、内容を確認するときっと何かヒントが隠されているはずです。(※診断ログはオンプレミスの SharePoint Server で確認できますが、SharePoint Online では確認できませんのでご了承ください。)診断ログの解析がうまくいかない場合は、是非私たちサポート サービスのご利用もご検討ください!:)
こんにちは。SharePoint サポート チームの成田です。今回は SharePoint Online 上の個人用サイトを管理者が予め作成する方法について記載したいと思います。オンプレミスの SharePoint Server 2013 の個人用サイトを管理者が予め作成する方法はこちらをご確認ください。SharePoint のソーシャル機能を使うためには、各ユーザーが個人用サイトが作成されている必要があります。個人用サイトが作成されるタイミングは、通常はサイトページ上の [ニュース フィード] や、ユーザー名のドロップダウンの [プロファイル] をクリックした時で、クリックしてから作成が完了するまでユーザーが数分間待たされることになります。「ユーザーがソーシャル機能を利用したいと思った時にすぐに利用できるようにしたい!」という場合、後述の手順であらかじめ個人用サイトを作成しておくことが可能です。SharePoint Online で管理者が個人用サイトを作成する方法==============================================SharePoint Online で管理者が個人用サイトを作成するには、ProfileLoader.CreatePersonalSiteEnqueueBulk メソッドを利用します。上記メソッドは Visual Studio や PowerShell から実行できます。1. Visual Studio を利用する方法2. PowerShell を利用する方法1. Visual Studio を利用する方法------------------------------------------下記の MSDN ページ内のサンプル コードを Visual Studio から実行してください。(変更が必要な個所はハイライトされている部分のみです!)開発者向けの SharePoint 2013 のソーシャルおよびコラボレーション機能の新機能http://msdn.microsoft.com/ja-jp/library/office/jj163783(v=office.15).aspx---------- ここから ----------複数ユーザー (SharePoint Online 上の 個人用サイト ホスト管理者のみ) 向けの個人サイトをプロビジョニングするには、ProfileLoader.CreatePersonalSiteEnqueueBulk メソッドを使用します。個人用サイト ホスト管理者は ProfileLoader.CreatePersonalSiteEnqueueBulk メソッドを使用して、プログラムによって複数ユーザー向けの個人サイトを SharePoint Online 上にプロビジョニングできます。これには OneDrive for Business や [サイトの管理] ページなどの機能が含まれています。次のコード例では、コンソール アプリケーションに .NET クライアント オブジェクト モデルを使用しています。この例を実行する前に、Microsoft.SharePoint.Client.dll、Microsoft.SharePoint.Client.Runtime.dll および Microsoft.SharePoint.Client.UserProfiles.dll への参照を追加し、userName、passwordStr、および serverUrl 変数のプレース ホルダー値を変更してください。serverUrl 変数は、SharePoint Online 管理センターのURL でなければなりません。-----using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Security;using Microsoft.SharePoint.Client;using Microsoft.SharePoint.Client.UserProfiles;namespace CreatePersonalSiteBulkConsole{ class Program { static void Main(string[] args) { string userName = "administrator@contoso.onmicrosoft.com"; string passwordStr = "password"; string serverUrl = "https://contoso-admin.sharepoint.com/"; using (var clientContext = new ClientContext(serverUrl)) { SecureString password = new SecureString(); Array.ForEach(passwordStr.ToCharArray(), c => password.AppendChar(c)); var credentials = new SharePointOnlineCredentials(userName, password); clientContext.Credentials = credentials; var web = clientContext.Web; clientContext.Load(web); clientContext.ExecuteQuery(); ProfileLoader loader = ProfileLoader.GetProfileLoader(clientContext); if (loader == null) { throw new InvalidOperationException("Failed to get ProfileLoader"); } string[] userEmails = { "usera@contoso.onmicrosoft.com", "userb@contoso.onmicrosoft.com" }; loader.CreatePersonalSiteEnqueueBulk(userEmails); loader.Context.ExecuteQuery(); } } }}----- メモ必要なクライアント DLL を入手するために、SharePoint Online Client Components SDK をダウンロードしてください。---------- ここまで ---------- メモに記載されているように、上記のコードを実行するには、Microsoft.SharePoint.Client.dll や Microsoft.SharePoint.Client.UserProfiles.dll などの参照を追加する必要があり、下記の SDK を予め Visual Studio を開始したコンピューター上にインストールする必要がありますのでご注意ください。SharePoint Online Client Components SDKhttp://www.microsoft.com/en-us/download/details.aspx?id=420382. PowerShell を利用する方法----------------------------------------下記の PowerShell スクリプトを実行することで、複数ユーザーの個人用サイトを管理者が一括で作成することが可能です。(変更が必要な個所はハイライトされている部分のみです!)前述の SharePoint Online Client Components SDK を PowerShell を実行するコンピューターにインストールする必要がありますのでご注意ください。-----Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"$webUrl = "https://contoso-admin.sharepoint.com/"$username = "administrator@contoso.onmicrosoft.com"$password = ConvertTo-SecureString -AsPlainText -String 'password' -Force$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl)$web = $ctx.Web$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username,$password)$ctx.Load($web)$loader =[Microsoft.SharePoint.Client.UserProfiles.ProfileLoader]::GetProfileLoader($ctx)$profile = $loader.GetUserProfile()$ctx.Load($profile)$ctx.ExecuteQuery()$UserEmails = @("usera@contoso.onmicrosoft.com"),@("userb@contoso.onmicrosoft.com")$loader.CreatePersonalSiteEnqueueBulk($UserEmails)$loader.Context.ExecuteQuery()-----参考情報========ユーザーが [ニュース フィード] をクリックする前にプログラムによって正常に個人用サイトが作成されたことを確認するには、SharePoint 管理センターの [ユーザー プロファイル] から該当ユーザーのプロファイルの編集画面を開き、[個人用サイト] フィールドにパスが設定されていることをご確認ください。いかがでしたでしょうか。ソーシャル機能が大幅に向上した SharePoint Online を是非お試しください!!
こんにちは、SharePoint サポートの佐伯です。今回の投稿では、コントロール表示テンプレート、アイテム表示テンプレートを編集して、検索結果アイテムをグリッド テーブルで表示する方法についてご紹介します。以前の投稿でも、検索結果アイテムのデザインを変更する方法について紹介していますのでご参照ください。なお、表示テンプレートの概要については、こちらの投稿をご参考にしていただけますと幸いです。それでは、コンテンツ検索 Web パーツの検索結果アイテムが以下のように表示されるようカスタマイズしましょう。まずは、アイテム表示テンプレート編集します。- アイテム表示テンプレートを編集するファイル名を Item_GridTable.html とし、以下のようなコードを記述します。
マスター ページ ギャラリーの [Display Template] – [Content Web Part] に Item_GridTable.html をアップロードし、コンテンツ検索 Web パーツのアイテム表示テンプレートに設定します。次に、コントロール表示テンプレートを編集します。- コントロール表示テンプレートを編集するファイル名を Control_GridTable.html とし、以下のようなコードを記述します。
マスター ページ ギャラリーの [Display Template] – [Content Web Part] に Control_GridTable.html をアップロードし、コンテンツ検索 Web パーツのコントロール表示テンプレートに設定します。検索結果アイテムが以下のように表示されました!※デザインおよびレイアウトや表示するアイテムの情報などはご自由に変更してください。なお、こちらの投稿では、お知らせアイテムを新着順に取得する方法について紹介しています。今回の投稿は以上です。検索結果のカスタマイズや設定に関する過去の投稿は以下の通りです。SharePoint 2013 検索結果が何件目または何ページ目のアイテムであるかを表示するSharePoint 2013 検索結果のホバー パネルにカスタムのアクションを追加するSharePoint 2013 コントロール表示テンプレートを使用して検索結果アイテムの一覧表示のデザインを変更するSharePoint 2013 クエリ テキストを編集してドキュメントを対象とした検索を行うSharePoint 2013 検索ボックスの初期値を変更するSharePoint 2013 検索結果のファイルをクライアント アプリケーションで開くSharePoint 2013 検索結果で検索語句を強調するカスタマイズSharePoint 2013 コンテンツ検索 Web パーツでカスタムの管理プロパティを表示するSharePoint 2013 お知らせアイテムを新着順に表示するコンテンツ検索 Web パーツを作成するSharePoint 2013 サイトの表示言語に合わせて検索結果にプロパティ名を表示するSharePoint 2013 検索結果のホバー パネルをカスタマイズするSharePoint 2013 すべての検索結果の種類に共通する表示をカスタマイズするSharePoint 2013 アイテム表示テンプレートを使用して検索結果の表示をカスタマイズするSharePoint 2013 検索結果の表示を制御する表示テンプレート