リスト ビュー Web パーツを他サイトで利用したい

以前本 Blog で 「SharePoint 2013 リスト ビュー Web パーツを他のサイトでどうしたも使いたい」 という記事を UP したことがありますが、今回は同様のことを SharePoint Designer を利用して行う方法のご紹介です。
(1/30 (土) の Japan SharePoint Group 勉強会の LT でお話しさせていただい他内容です)

SharePoint 2010、2013 両方で同じことできます。

1.まずトップページでもどこでもいいので、リストやライブラリを Web パーツとして貼り付けて、[現在のビューの編集] とかツールバーの種類とか、タイトル等の設定を行います。
2.SharePoint Designer でサイトを開き、リスト ビュー Web パーツを貼り付けたページを開きます。
     
3.コード内から対象のリスト ビュー Web パーツを探します。

リスト ビュー Web パーツの開始タグは、<WebPartPages:XsltListViewWebPart runat="ser・・・ からはじまるので、うまくコード内を検索して探してください。
同じページ内にリスト ビュー Web パーツが複数あれば、その分だけ <WebPartPages:XsltListViewWebPart runat="ser ・・ から始まるタグがあります。
その場合、開始タグにマウスカーソル合わせておいて、リボンの [Web パーツ ツール] – [書式] タブ内で、Web パーツのタイトルが確認できます。
  image

4.2010 だとここでリボン内に [リスト ビュー ツール] タブが表示されるので、この手順4はスキップしてください。

2013 の場合、[リスト ビュー ツール] タブを表示するため、[プロパティ] をクリックします。
  image
ブラウザーで利用できる Web パーツの編集画面と同様の画面がダイアログで開くため、なにも変更せず [OK] をクリックします。
    image
その後再度リスト ビュー Web パーツの開始タグコードにマウス カーソルを合わせると、リボンに [リスト ビュー ツール] タブがでてきます。
   

5.[リスト ビュー ツール] – [Web パーツ] タブ内の [サイト ギャラリーへ] をクリックします。  
   image  
6.[サイト ギャラリーへの Web パーツの保存] ダイアログが表示されます。
      名前はエンコードされるので半角で付け直したほうがいいです。[OK] をクリックします。 
7.次のような絶対パスでリストを参照していいかどうか確認するダイアログが表示されるため、[はい] をクリックします。
   image 
8.SharePoint Designer は閉じて OK です。操作で利用したページは保存する必要ありません。
9.同じサイト コレクション内の他サイトを開き、Web パーツを配置する際、[その他] カテゴリーより、配置できます。
   image      

  • SPD でサイト ギャラリーに保存した Web パーツを [その他] カテゴリーから消したい場合、Web パーツ ギャラリーより削除ください。
  • Web パーツ ギャラリーから webpart ファイルをダウンロードし、他サイト コレクションの Web パーツ ギャラリーに UP しても、他サイト コレクションでは利用できません。
    奥田 Bunny

[SharePoint Online/SharePoint Server 2013] JS リンクでリストビューに条件付き書式設定

SharePoint 2013 では SharePoint Designer 2013 でリストビューを開いても、2010 では利用できる [条件付き書式] 機能は利用できません。SPD 上からメニューもなくなっています。
JS リンクを利用して条件付き書式を設定する例をご紹介します。

<設定例>
image

まず、用意する JS ファイルの内容はこんな感じです。

(function () {

var overrideCtx = {};
overrideCtx.Templates = {};
overrideCtx.OnPostRender = Condition;
   SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);

})();

function Condition(ctx){

for (i = 0; i < ctx.ListData.Row.length; i++) {
if (ctx.ListData.Row[i][“FieldName“]) {

if (ctx.ListData.Row[i][“FieldName“].indexOf(‘AZ‘) != -1) {

var rowId = GenerateIIDForListItem(ctx, ctx.ListData.Row[i]);
var trElement = document.getElementById(rowId);
trElement.style.backgroundColor = “#FFFF00“; }

} } }

● FieldName : 条件に利用したい列の内部名
AZ : 列に含まれる値 (部分一致も可)
#FFFF00 : 条件に一致する際のアイテムの背景色

[適用方法]
1. JS ファイルをマスター ページギャラリーにでもアップロードします。

–  アップロード時にプロパティの編集画面でコンテンツ タイプは何を選んでもいいです。
–  アップロードしたファイルはメジャーバージョンに発行します。

2. JS リンクを適用させたいビューを、[設定] – [ページの編集] をクリックし、編集モードに切り替えます。
3. ビュー内に配置されているリスト ビュー Web パーツで、[Web パーツの編集] をクリックし、 Web パーツの設定画面を表示します。
4. [その他] カテゴリーにある [JS リンク] に js ファイルへのパスを次のように指定し、[OK] をクリックします。
 ~sitecollection/_catalogs/masterpage/ファイル名.js
5. [ページ] タブから [編集の終了] をクリックします。

以上、JS リンクで条件付き書式を設定する内容でした。JS リンクで、アイテム全体に対するスタイル設定を行いたい場合の参考 (OnPostRender の利用) にもいただけると思います。

奥田 うさぎ

[SharePoint 2010] SPD 2010 でリストビューに条件付き書式設定

SharePoint Server 2010 で、リストビューに条件付き書式を設定する方法です。SharePoint Designer 2010 を利用します。

<例>
image

1.SharePoint Designer で対象のサイトを開きます。
2.[サイト オブジェクト] から [リストとライブラリ] をクリックして、リストとライブラリの一覧を開きます。
3.条件付き書式を設定したいリストをクリックして開きます。
image

4.リストが開きます。[ビュー] カテゴリーから条件付き書式を設定したいビューをクリックして開きます。
image

5.ビューがエディター画面で開いたら、[デザイン] ビューに切り替えます。
image
6.ビュー内の任意の場所をクリックして選択し、リボン内に [リストビュー ツール] タブを表示させます。
image
7.[リスト ビュー ツール] – [オプション] タブにある [条件付き書式] – [行の書式設定] をクリックします。
image

8.[条件基準] ダイアログ ボックスが開きます。任意の条件を指定します。
image
9.[スタイルの設定] をクリックします。
10.[スタイルの変更] ダイアログ ボックスが開きます。設定したいスタイルを指定します。
[背景] カテゴリーで [background-color] に任意の色を指定し、[OK] をクリックします。
image
11.上書き保存します。

 

以上、SharePoint 2010 での Tips でした。
これ SharePoint Designer 2013 では [条件付き書式] メニューがなくなってるので、同様の操作では設定できません。別の方法でカスタマイズすることになります。次回 SharePoint 2013 で条件付き書式の設定方法を投稿します。

奥田 うさぎ

SharePoint Online/SharePoint Server 2013 – ディスカッション掲示板でビューを作成

SharePoint 2013 で掲示板にビューを作成する Tips をご紹介します。
下図のように掲示板の既定のビューを、標準ビュー形式に変更してみます。
image

① 標準ビュー形式のビュー作成

 1.  [リスト] タブ – [ビューの作成] をクリックします。
 2.ディスカッション掲示板では、[標準ビュー] がでてこないので、既存のビューから作成開始の [管理] をクリックします。
image

3.ビュー名を付けて、表示したい列を指定します。必要に応じて並べ替えやフィルター、グループ化等その他設定も行います。
また作成したビューを既定にしたい場合、[このビューを既定にする] を選択しておきます。
image

ここまでで、見た目は標準ビューになります。
image

が! ここまでだと問題があり、タイトル列 (件名に入力した内容) のリンクをクリックすると、下図のように、返信も既定ビューである標準ビュー形式で開きます。。
image

本来は、タイトル列をクリックすると、こうなってほしいんですよね?
image

次のステップでこれをなんとかします。

② ビューの設定変更

コメント欄で教えていただいた内容を追記します
作成したビューの編集画面で、 [フォルダー] 設定を [最上位のフォルダー内を表示する]に変更

[参考] 集計列を作成

 ② で解説しますが、参考までに、集計列を使う方法も
もともとの既定ビューである [件名] ビューで、タイトル列をクリックし、開いた画面の URL を確認すると、こうなっています。
 https://サイトURL/Lists/掲示板パス/Flat.aspx?RootFolder=掲示板への相対パス/件名の値(エンコードされている)

いったん開いてみて、表示される URL をコピーしてみてください。
私の環境だと、こんな感じでした↓
https://crie.sharepoint.com/Cust/Lists/List2/Flat.aspx?RootFolder=%2FCust%2FLists%2FList2%2F%E3%83%86%E3%82%B9%E3%83%88%EF%BC%91&FolderCTID=0x01200200836448E9AAB30E48A7F54EC0409D8662

一番おしりの &FolderCTID=XXXXXXXXXXXXXXXXXXXXX の部分はなくてもいいので、それ以前の部分の、
https://crie.sharepoint.com/Cust/Lists/List2/Flat.aspx?RootFolder=%2FCust%2FLists%2FList2%2F%E3%83%86%E3%82%B9%E3%83%88%EF%BC%91 を利用して集計列を作成します。

■ 集計列の数式は、下記です。
列名: 任意
この列の情報の種類:集計値
数式 : ※ 赤字部分は環境にあわせて変更ください)
※ この式から返されるデータの種類 は [数値] にしてください。
=CONCATENATE(“<a href=’https://crie.sharepoint.com/Cust/Lists/List2/Flat.aspx?RootFolder=%2FCust%2FLists%2FList2%2F”,件名,”‘>クリックして開く</a>”)    

 image

③ ビューを編集

最後にビューに表示する列を整えれば、、
・ 集計列で作成したハイパーリンクが表示される列を一番左に
・ 表示する列に対して、[タイトル(編集メニュー付きのアイテム)] を [件名] に変更
image

ディスカッション掲示板でないと、なかなか返信を付ける形でのデータ登録は難しいですし、ディスカッション掲示板に列を追加した際にはデフォルトの件名ビューよりも、標準形式ビューで追加した列も表示したいケースが出てくると思います。そんなときに活用いただければ。

奥田 うさぎ

SharePoint 今月のデータをビューに表示したい

列の値 (日付型) を利用したビューにおけるフィルター設定について 「今月のデータを表示したい」 場合です。

基本

 日付型を利用してフィルターしたビューを作成する場合、フィルター条件でよく [Today] 利用するかと。[Today] には足し算引き算もできますよね
image

今月のデータをフィルター表示したい場合

フィルター条件で、今月の日付かどうかを直接判断する方法がないため、あらかじめ日付型の列をベースに集計列を2個作っておきます。両方とも [この式から返されるデータの種類] は [日付] にしてください。

   ・  当月開始日      =DATE(YEAR(日付列),MONTH(日付列),”1″)

   ・  当月終了日      =DATE(YEAR(日付列),MONTH(日付列)+1,0)

image

ここまでできたら、あとはビューのフィルター条件において、[Today] でなんとかなりますね。
image

集計列の数式を工夫すれば、先月のデータとか今年のデータとかも同様にできます。

以上です。

奥田 Bunny

SharePoint リスト アイテムのコピー ボタンを作成

リストにデータを登録する際に、既存データをコピーしたいってケースはないですか? データの内容によりけりだと思いますが、そんなリストに、アイテムのコピーボタンを追加した例です。

image

リストにデータを登録する際に、既存データをコピーしたいってケースはないですか? データの内容によりけりだと思いますが、そんなリスト

1. リストを作成し、列を任意に作成します。
  
※ 列の内部名は JavaScript 内で利用するので、列名は半角文字で作成することをおすすめします。
列作成時に半角文字で入力された列名 = 内部名です。その後列名を変更しても内部名は変わりません。

2. コピーボタンを追加したいビューを開きます。
[設定] – [ページの編集] をクリックし、編集モードに切り替えます。

3. [Web パーツの追加] をクリックし、スクリプト エディター Web パーツを挿入します。

4. 挿入したスクリプト エディター Web パーツ内の [スニペットを編集] をクリックします。
埋め込み ダイアログが表示されるので、下記 JavaScript コードを記述します。

      !赤字部分は環境に合わせて任意に変更ください!
※ リストの名前は環境に応じて変更ください
※ 列名 (内部名を利用) は環境に応じて変更ください
※ リストの URL も環境にあわせて変更ください

<input type=”button” onclick=”CopyItem()” value=’単一データを選択してコピー’/>
var context;
var currentItem;
var sourceList;
function CopyItem() {
context=SP.ClientContext.get_current();
var selectedItemIds = SP.ListOperation.Selection.getSelectedItems(context);
var web=context.get_web();
sourceList=web.get_lists().getByTitle(‘CopyButtonList‘);
currentItem = sourceList.getItemById(parseInt(selectedItemIds[0].id));
context.load(currentItem);
context.executeQueryAsync(Function.createDelegate(this,Endload),
Function.createDelegate(this,error));
}
function Endload(sender, args){
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = sourceList.addItem(itemCreateInfo);
oListItem.set_item(‘Title‘, currentItem.get_item(‘Title‘));
oListItem.set_item(‘Field1′, currentItem.get_item(‘Field1‘));
oListItem.set_item(‘Field2‘, currentItem.get_item(‘Field2‘));
oListItem.set_item(‘Field3‘, currentItem.get_item(‘Field3‘));
oListItem.set_item(‘Field4‘, currentItem.get_item(‘Field4‘));
oListItem.set_item(‘Field5‘, currentItem.get_item(‘Field5‘));
oListItem.update();
context.executeQueryAsync(Function.createDelegate(this,endCopy),
Function.createDelegate(this,error));}
function endCopy(){
alert(‘コピーしました!  ID: ‘+ oListItem.get_id()+’\n編集画面を開きます’);
url=’https://crieillumi.sharepoint.com/test/Lists/CopyButtonList/EditForm.aspx?ID=’+oListItem.get_id();
location.href(url);
}
function error(sender, args){
alert(args.get_message());}

 ● ワンポイント
SP.ListOperation.Selection.getSelectedItems(context) で、リスト内で選択されたリスト アイテム ID
コレクションが取得できます。

5. [ページ] タブの [編集の終了] をクリックし保存します。

またこの記事の手順では、リスト ビュー内にボタンを追加しましたが、リボン内に追加したい場合 SharePoint Designer 2013 で可能です。以前の記事になりますが、SharePoint 2013 SharePoint Designer でリボン内にメニュー作成 – 他のサイトにお知らせコピー をあわせて参考に、この記事でご紹介した JavaScript をリボン ボタンのアクションとして追加ください。

以上、奥田でした うさぎ

SharePoint Online/SharePoint Server 2013 – 集計列で利用できる関数

ここ最近、よくいただく質問から第5弾です。


■ 質問内容

  集計列っで利用できる関数一覧ってありますか?

■ 回答

MSDN だとこれがわかりやすいかと。 [集計フィールドの数式]
 
https://msdn.microsoft.com/ja-jp/library/office/bb862071(v=office.14).aspx

また当 Blog では以前こんな記事をご紹介しました。

  ・ SharePoint 集計列 Tips (TEXT 関数による日付のフォーマット) 
  ・ SharePoint 集計列 列の表示デザインに使ってみる

その他集計列 利用例

image

① 日付の列を利用して、会計年度を表示

        =IF(DATE(YEAR([日付の列]),4,1)>日付の列,YEAR([日付の列])-1,YEAR([日付の列]))&"年度"

② 更新日時と登録日時を利用して、更新されたデータをチェック & ③ HTML を表示

       =IF([更新日時]>[登録日時],"<img src=’/_layouts/images/star.gif’/>"," ")

    ※ HTML として表示したいため [この式から返されるデータの種類] は 「数値」 を選択してください。

以上、集計列についてでした。 奥田Bunny