SharePointにJavaScriptでTickerを実装する - WebService の呼び出し(2)

昨日まででとりあえずの Web Service 呼び出しはできたのでスクリプトをもう少しいじっていく。その前に、必要そうな引数をもう少し調査。

viewName

Views.asmx の GetViewCollection を使えばビューのリストを取得できるので、viewName で指定する GUID がわかる。ただそれも面倒なので、代替手段としては、listName を引っ張ってきたように…

  • 任意の内容でビューを作成する
  • 作成したビューの編集を行う
  • 表示された URL の /_layouts/ViewEdit.aspx 以下に URL エンコードされた View というパラメタが viewName なのでデコードして使う

ビューを作っておけるなら、他のパラメタを指定しなくていいので楽ちん。
Views.asmx の GetView や、List.asmx の GetListAndView を用いれば、後々使うフィールド名の取得もできる。

query

詳細は MSDN - Query 要素 (クエリ) を見るとして、GroupBy、OrderBy、Where の指定でグループ化やソート順、フィルタの指定ができる。FieldRef の Name は viewFields のものと同じ。
MSDNのサンプルそのままだけどこんな感じの指定になる。

<Query>
  <OrderBy>
    <FieldRef Name="Modified" Ascending="FALSE"></FieldRef>
  </OrderBy>
  <Where>
    <Or>
      <Neq>
        <FieldRef Name="Status"></FieldRef>
        <Value Type="Text">Completed</Value>
      </Neq>
      <IsNull>
        <FieldRef Name="Status"></FieldRef>
      </IsNull>
    </Or>
  </Where>
</Query>

viewFields

下記のように指定する。

<viewFields>
    <ViewFields>
        <FieldRef Name="ID" />
        <FieldRef Name="Title" />
    </ViewFields>
</viewFields>

<FieldRef Name="***" />を連ねていけばいい。Name の部分はリストのフィールド名で、日本語はつかえない気がする。リストページの HTML ソースを見て、 DisplayName で検索、近くにある Name の値を調べればいいかも。もしくは、ビューの情報から指定する必要有り。

表示名例 Name
タイトル Title
本文 Body
レンジ _x30b5__x30d6__x30cd__x30c3__x30

rowLimit

取得したい件数を指定するだけ、これは単純

queryOptions

日付を UTC で取得したい場合などに指定する模様、とりあえずこれはパス。

webID

SiteData.asmx の GetWeb を使えば取得できるけど、無くてもうまく動いてるのでひとまずパス。