SharePointにJavaScriptでTickerを実装する - jQueryプラグイン化(MOSS Client) (2)

詳細はソースをみてもらうとして、それぞれ簡単に例示を。

共通事項

関数の呼び出しはすべて非同期で実行される

MOSS.<endpoint>.<functionName>({
    url : '/_vti_bin/<endpoint>.asmx',
    callback: function(data, error) { },
    <param1>:...,
    <param2>:...,
});
<endpoint> Lists.asmx の場合、Lists というように asmx をのぞいた部分
<functionName> <endpoint> にある関数名
url エンドポイントへのURLを指定する場合は設定する。指定しなくてもかまわない。
callback 呼び出しが完了した際にここで指定した関数が呼ばれる。
第一引数の data は$.ajax({ complete : function (data) {} }); の第一引数(data)がそのまま入る
第二引数の error は SOAP Fault があれば値が入り、エラーがなければ null
<param1> 他 それぞれの関数の必要に応じていろいろ指定

MOSS.SiteData

SiteData.asmx で提供される関数のラッパー

getWeb

GetWeb 関数、主に WebID 調査用のため。

MOSS.SiteData.getWeb({
    callback: function(result) {
        alert(result.webMetadata.title + ' のWebIDは下記の通りです\n\n' + result.webMetadata.webID);
    }});
result.webMetadata webID, title, description, author, lastModified についてまとめたもの
result.data $.ajax({ complete : function (data) {} }); の data
result.error エラー情報(SOAP Fault)

MOSS.Lists

getListCollection

GetListCollection 関数、主にリストの一覧取得のため。

MOSS.Lists.getListCollection({
    callback: function(result) {
        if ( result.error ) {
            alert('Code : ' + result.error.code + '\nReason : ' + result.error.reason + '\nDetail' + result.error.detail);
        }
        var html = '<ul>';
        for ( var i = 0; i < result.lists.length; i++ ) {
            html += '<li><a href="' + result.lists[i].url + '">' + result.lists[i].title + '</a></li>';
        }
        html += '</ul>';
        $('body').html(html);
    }});
result.lists 比較的よく使いそうな id, title, url, description の配列
result.rows selectNodes('/soap:Envelope/soap:Body/GetListCollectionResponse/GetListCollectionResult/Lists/List'); の結果
result.data $.ajax({ complete : function (data) {} }); の data
result.error エラー情報(SOAP Fault)
getListItems

GetListItems 関数、アイテムの取得のため。

MOSS.Lists.getListItems({
    listName: '{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}',
    //viewName: 'ビュー名(GUID)',
    //query: '<query>〜〜</query>',
    //fields: '<ViewFields><FieldRef Name="ID" /><FieldRef Name="Title" /><FieldRef Name="Body" /></ViewFields>',
    //rowLimit: '5',
    //options: '<QueryOptions>〜〜</QueryOptions>',
    //webID: 'WebID(GUID)',
    callback: function(result) {
        var html = '<dl>';
        for ( var i = 0; i < result.rows.length; i++ ) {
            html += '<dt>' + result.rows[i].getAttribute('ows_Title') + '</dt>';
            html += '<dd>' + result.rows[i].getAttribute('ows_Body') + '</dd>';
        }
        html += '</dl>';
        $('body').html(html);
    }});
result.rows selectNodes('/soap:Envelope/soap:Body/GetListItemsResponse/GetListItemsResult/listitems/rs:data/z:row'); の結果
result.data $.ajax({ complete : function (data) {} }); の data
result.error エラー情報(SOAP Fault)

MOSS.Imaging

Lists.asmx の画像ライブラリー版(みたいなもの)

listPictureLibrary

ListPictureLibrary 関数、画像ライブラリの一覧取得のため。関数名が違うだけで MOSS.Lists.getListCollection とほぼ同じ。

MOSS.Imaging.listPictureLibrary({
    callback: function(result) {
        var html = '<ul>';
        for ( var i = 0; i < result.lists.length; i++ ) {
            html += '<li>' + result.lists[i].title + '</li>';
        }
        html += '</dl>';
        $('body').html(html);
    }});
getListItems

GetListItems 関数、画像ライブラリのアイテム取得のため。

MOSS.Imaging.getListItems({
    listName: 'リスト名(listPictureLibraryで取得できる title を指定する)',
    //folder: 'フォルダ名',
    callback: function(result) {
        if ( result.error ) {
            alert('Code : ' + result.error.code + '\nReason : ' + result.error.reason + '\nDetail' + result.error.detail);
        }
        var html = '<ul>';
        for ( var i = 0; i < result.rows.length; i++ ) {
            html += '<li>' + result.rows[i].getAttribute('ows_EncodedAbsUrl') + '</li>';
        }
        html += '</ul>';
        $('body').html(html);
    }});