InfoPathで記入したフォームがSharePoint Serverのライブラリに保存される設定

現在取り組んでいるユーザーシナリオを実現するためには、InfoPathでテンプレートを編集して、送信機能を追加する必要がありました。

  • ボタンを配置する。
  • ボタンに動作規則を設定する。(少なくとも、保存先のライブラリとファイル名の付け方を指定する。)

これをするためには事前に

  • SharePoint サイトにドキュメントライブラリを作っておく。
  • ライブラリに保存するドキュメントの種類をInfoPathにしておく。

ことが必要です。

InfoPathのテンプレート(.xnsファイル)に送信機能を追加する

  • 「フォームテンプレートのデザイン」モードで.xnsファイルを開く。
  • フォームにボタンを配置する。
  • ボタンを右クリックして「ボタンのプロパティ」を選択すると、「ボタンのプロパティ」が開かれる。
  • 「動作規則」ボタンをクリックすると、複数の規則を追加できる「動作規則」ボックスが開かれる。
  • 「追加」ボタンをクリックすると、複数の動作を設定できる「動作規則」ボックスが開かれる。
  • 「動作の追加」ボタンをクリックすると、希望の動作を選べる「動作」ボックスが開かれる。
  • 「データ接続を使用して送信する」を選択して、データ接続の種類を選択する「追加」ボタンをクリックすると、「データ接続ウィザード」が開かれる。

データ接続ウィザードで送信先として指定するアドレス

ドキュメントライブラリのデフォルトビューのURLが

http://(サーバー名)/sites/(サイト名)/DocLib/Forms/AllItems.aspx

である場合、「ドキュメント ライブラリ」欄には http://(サーバー名)/sites/(サイト名)/DocLib/ までを記入すると正しく動作しました。ディレクトリ/Formsまで記入してしまうと、その後InfoPathでフォームを記入してドキュメントを送信しても、ライブラリに保存されませんでした。(エラーも出ないのでどこが悪いのかわからず悩んでしまいました。)

ファイル名の規則

ユーザーが記入した要素データを利用してファイル名を付けることによって、ドキュメントライブラリ上でドキュメントの分類ができます。(SharePoint本来の使い方としては、要素をビューの列にして分類する方法をとりますが、今回はファイル名でも分類できることを重視しました。)
データソースの要素に含まれるCategoryNameとResourceNameを利用して、ユーザーが選んだカテゴリとリソース名がファイル名からわかるようにし、また、ファイル名が重複しないように、日付と時間を付加しました。now()を使うと保存時の日付と日時がISO形式でつけられます。
これら3つの要素をつなげてファイル名とするために、concat()関数を使用して「ファイル名」欄に記入しました。

concat(CategoryName, ResourceName, now())

こうすると、3つの要素が接続されたファイル名で保存されます。(ドキュメントライブラリをリロードすると確認できます。保存されていない場合は、上記のURL指定が原因かもしれません。)

設定済みの送信先とファイル名の規則を変更する場合

  • InfoPathの右側に「作業ウィンドウ」を表示させ、「データソース」を選択する。
  • 「操作」エリアにある「データ接続の管理」をクリックすると「データ接続」ダイアログボックスが開かれる。
  • 「追加」ボタンをクリックすると、「データ接続ウィザード」が開かれる。