742 views(since 2013/10/08)

SharePoint2013  開発メモ

前回はSharePoint2013アプリの登録に関して記載いたしましたが
今回は開発にあたり、はまりそうな所を記載していきます。

ファイルの情報を取得するまでの流れ

SharePoint2013は

  1. サイト(サブサイト含む)
  2. リスト(ドキュメント・マイクロフィードなど)
  3. リストアイテム(フォルダ・ファイルなど)

のような感じで情報が管理されており、ファイル等のリストアイテムを取得したい場合は
1から順番に情報を取得する必要があります。

それぞれ対応するクラスは下記になります。

サイト WebCollectionクラス
リスト ListCollectionクラス
リストアイテム ListItemCollectionクラス

eoe20150310
Exceed One Explorer
※SharePointのアイコンの階層がサイト、「サイトのページ」などの階層がリスト、その他はリストアイテムから取得できます。

 

リストアイテムを見ないとファイルの場所がわからない?

リストには階層情報を保持していないため、ファイルの場所が分かりません。
リストからファイルがある場所を知りたい場合は以下のようなルールになっている模様なので、参考にしていただければと思います。

foreach(List list in (ListCollection)){
  if(!String.IsNullOrEmpty(list.DocumentTemplateUrl)){
/*
    list.DocumentTemplateUrlを「/」で分解してForms階層の上の階層にファイルがある
*/
  }
  if(list.EntityTypeName.IndexOf("List")!=-1){
/*
    エンティティ名の後ろにListが含まれているときは
    Lists/(Listを除去したエンティティ名)/
    にファイルがある。
    list.EntityTypeNameは、スペースなどの文字を「_x0020_」で保持しているため、必要に応じて変換する。*/
  }
}

SharePoint上にあるOfficeファイルをOfficeOnlineで編集させたい

Office2013がインストールされているWindowsPCであれば、Office2013用ファイルがあるURLにアクセスした際Office2013がSharePoint2013と通信して作業することが可能ですが、
Web上で編集したい場合OfficeOnlineで読み込めるものであれば、OfficeファイルURLの後ろに ?d=w(ハイフンを抜いたファイルの固有ID)にアクセスすると、OfficeOnlineが起動しWeb上で操作ができます。

 

アプリを起動して放置していたらJSON通信を行うアプリでエラーが出る

SharePointContextFilterを使用している場合はデフォルトでセッションが20分で切れ、コンテキストトークン値がセッションから破棄されます。
セッションが切れた場合、アクセストークン及びリフレッシュトークンが有効期間内でもエラーになりますので、
あらかじめ下記のようにセッションの有効期限を設定します。
Web.configのsystem.web項目に
<sessionState timeout=”(有効期限/分)”/>
を追加すると解決します。

※C#でセッション有効時間を確認したい場合、HttpContextBase.Session.Timeoutで確認できます。
※Azure websitesでは、sessionStateがInProcモードの場合、指定した時間前でもセッションが破棄されるケースがありますので注意してください。

Filed Under: SharePoint

Tags:

About the Author

Leave a Reply




If you want a picture to show with your comment, go get a Gravatar.