"SharePoint Designer " にカテゴリー登録されている31 投稿

[SP2013] SharePoint Designer 2013 がインストールできない

検証環境としてSharePoint Server 2013 を構築しており、このサーバー上にOfficeクライアントをインストールした後、SharePoint Designer 2013 がインストールできなくなるトラブルがあったため、情報共有しておきます。

SharePoint サーバー上に次の順でOfficeアプリケーションをインストールしました。

1. Microsoft Office Professional Plus 2013
2. Microsoft Visio 2013

この次に SharePoint Designer 2013 をインストールしようとしたところ次のようなエラーが表示され、セットアップができない状態になりました。

2013-06-28 0-46-31

これを修正するにはレジストリを編集する必要があります。レジストリーキーを削除するため、試す場合は念のためレジストリーキーのエクスポートなどの処置をするようにし、自己責任にて行ってください。レジストリーを修正するため、Regedit.exe (レジストリ エディタ)を起動し、次のキーを削除します。

[HKEY_CLASSES_ROOT\Installer\Products\00005119110000000000000000F01FEC]

2013-06-28 1-01-02

ちなみに、私の環境はMicrosoft Office Professional Plus 2013をインストールしているため上記のキーですが、異なるエデションを利用している場合はキーが異なる可能性がありますので注意してください。

[追記]

検証中、上記手順でキー削除後に Office アプリケーションが不安定になるため、削除前にレジストリキーをエクスポートし、SPD2013をインストールした後、再びエクスポートしたキーをインポートしなおすと動作が安定しました。ご参考まで。

 

 


SharePoint 2010 のブログ カテゴリー表示の文字化け

SharePoint Server 2010 SP1 + 2011 June CU Reflesh + 2011 August CU 適用環境でブログサイトを作成している場合に、カテゴリリンクをクリックするとカテゴリ名表示が文字化けします(※オンプレミスだけでなく、SharePoint Online も 2012.2.16現在同様の問題が発生してるようです)。

Blog-trouble-01

問題の原因はブログサイトの Default.aspx に配置されているカテゴリ表示のWebパーツです。このWebパーツが生成するリンクが正しい情報を取得していません。内部的にXMLでデータを取得し、XSTLを使ってリンクを生成しているのですが、XSLTに不正があります。どうもマイクロソフト社の既知の問題とはなっているようですが、とにかくこのままでは使えません。

現状の回避策としては、SharePoint Designer 2010 で Default.aspx (/Lists/Categories/Category.aspxも同様)にアクセスし、Webパーツのリンクを直接編集するのが最善策です。

1. SharePoint Designer 2010 を使ってWeb パーツのリンク部分のハイパーリンクを編集する

Blog-trouble-02

2. 下記通りのアドレス部分のリンクを修正する

(誤) {$HttpVDir}/{$thisNode/../@resource.wss.lists_Folder}/{$thisNode/../@resource.wss.blogcategories_Folder}/Category.aspx?CategoryId={$thisNode/@ID}&Name={$CategoryTitle}

(正){$HttpVDir}/{$thisNode/../@resource.wss.lists_Folder}/{$thisNode/../@resource.wss.blogcategories_Folder}/Category.aspx?CategoryId={$thisNode/@ID}&Name={$thisNode/@Title}

Blog-trouble-03
3. [OK]をクリックし、ページを上書き保存する。

4. 検証する (以上の操作をリンクごとに行う)

Blog-trouble-04

こんなチマチマと作業するのはいたたまれませんが、英語圏以外は同様の状況のようですので、いずれはHot Fix が出てくれるとよいのですが。。。

[参考]

http://blog.bugrapostaci.com/2012/01/27/sharepoint-2010-charecter-problem-in-category-titles-in-blog-site-for-different-languages/#comment-584

 


[SPDワークフロー] プロパティ変更をトリガにするには

ワークフローではファイルを別のユーザーが更新したら、またはあるプロパティ値が変更されたらメールを送信するなどの機能が必要になることがあります。これをSharePoint Designer 2007で行い、特定のプロパティ変更をトリガにワークフローを開始するにはちょっと工夫が必要です。

理由は、変更前の情報と変更後の情報をSharePoint Designer では認識してくれないからです。ということは、変更前の情報をどこかに持たせて、変更後の情報と比較してやれば、トリガにできるということになりますね?

こうしたフローを実装するには次のように行います。

[1st Step]

  1. 特定のフィールドの以前の値を格納する列(たとえば、beforeとします)を作成する
  2. SharePoint Designer でワークフローを作成する(詳細は2nd Stepで)

[2nd Step]

  1. ワークフローの起動オプションを「アイテム変更時に自動的にワークフローを開始するよう」に設定する
  2. 1つめの条件とアクションを次のように構成する
    "before列が空の場合に、トリガにしたい既存の列の値を格納する"
  3. 2つめの条件とアクションを次のように構成する
    "既存の列の値とbefore列の値が一致する場合はワークフローを中止する"
  4. 3つめは使用したいアクションのみを構成する

上記のステップは、次のURLにあるストリーミング コンテンツ(英語)で手順が確認できます。

[参考] http://office.microsoft.com/en-us/sharepointdesigner/HA102564191033.aspx (英語)

※上記URLは、Officeオンラインです。Office オンラインは基本的に英語の文書がありその対となる日本語文書がそろっているのですが、実際には日本語よりも英語のほうが情報が充実していまるようです。時には、英語で文献を探すことをお勧めします。またブログでも、日本語にはなっていないもので、役立ちそうなものは取り上げるようにしたいと思います。confident


アイテム保存の[OK] ボタンクリック時の入力フィールド検証

SharePoint Designer 2007を使用してリストやライブラリのNewForm.aspx(アイテムの新規作成)やEditForm.aspx(アイテムのプロパティ編集)を編集し、カスタムのJavaScriptを実装することで日付などの入力フィールドの妥当性の検証が可能です。たとえば、開始日と終了日の2つのフィールドがあったとして、終了日が開始日より前の日付となっているような場合、SharePoint Server 2007ではエラーとして扱ってくれません。そこで、JavaScript を実装して2つのフィールド値の比較をしてエラーを検出するようにします。この時、「PreSaveAction」という名前の関数を定義すると、[OK]ボタンクリック時の既定の処理を制御できます。実際には、このPreSaveAction関数はSharePointが既定で持っている関数であり、これを上書きして既定の動作を少し変えてやります。

参考までに、"開始日"と"終了日"という名前の2つの"日付と時刻(日付のみ)"のフィールドがあることを前提としたサンプルコードを記載しておきます。

PreSaveAction 関数を上書きするコードサンプル

function PreSaveAction()
{
     var startDate=getTagFromIdentifierAndTitle("input","DateTimeFieldDate","開始日");
     var endDate=getTagFromIdentifierAndTitle("input","DateTimeFieldDate","終了日");

  var date1Array=startDate.value.split("/");
  var date1=new Date(date1Array[0],date1Array[1]-1,date1Array[2]);
  var date2Array=endDate.value.split("/");
  var date2=new Date(date2Array[0],date2Array[1]-1,date2Array[2]);

    if (date1>date2)
    {
         alert("日付の指定が正しくありません");
         return false;
    }//if
    return true;
} //function

//SharePointのフィールドを取得するための関数
function getTagFromIdentifierAndTitle(tagName,identifier,title)
{
var len=identifier.length;
var tags=document.getElementByTagName(tagName);

  for(var i=0;i<tags.length;i++)
  {
     var tempString=tags[i].id;
     if(tags[i].title==title&&(identifier==""||tempString.indexOf(identifier)==tempString.length-len))
     {
           return tags[i];
      }//if
      return null;
  }//for
}//function


SharePoint の 日付選択コントロールにスタイルが適用されない

前回の投稿では、SharePoint Designer 2007 を使用してカスタム作成ページにSharePoint の 日付選択コントロールを追加して利用する例をご紹介しました。

しかし、この日付選択コントロールは既定では SharePoint のスタイルが適用されずレイアウトが崩れてしまいます。

この場合の解決方法は次の通りです。

  1. SharePoint ハイブ(%programfiles%\common files\microsoft shared\web server extensions\12\)内のtemplates\layoutsにある "iframe.aspx" をメモ帳などで開く
  2. <Head>タグの直後に次のタグを追加する。
    <link rel="stylesheet" type="text/css"href="/_layouts/1041/styles/datepicker.css"/>
    ※ 2008.3.28 修正しました。ディレクトリ指定をうっかり "1033" と記載しておりました。 "1041" の間違いでした。

以上、Tips でした。


【参考】
http://blog.richfinn.net/2006/12/10/SharePointDateTimeControlDoesNotRenderStyles.aspx