トップ回答者
SharePoint Designerのワークフローデザイナーに関する質問です。

質問
回答
-
どうも。
これは、シンプルです。
条件: フィールド が 値 に等しい
となっていると思いますが、
まず、フィールド は、日付フィールドを指定します。次に、値 は無視します。
に等しい を「空である」に変更します。
※「空である」を選択すると、値 は消えます。
ちなみに、この後の設定にもちょいと癖があります。
Designer の「現在のアイテムにフィールドを設定する」アクションを素直に
使うと、日付データを設定することができません。
today と書くと、そのまま「today」と表示されます(なんてお馬鹿な・・・^^;)
「現在のアイテムにフィールドを設定する」を選択し、値 については、
「ワークフロー参照の定義」で
ソース:現在のアイテム
フィールド:更新日時
を指定するといいと思います。
saruhiko- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:20
-
うわ、トンチンカンな回答をしてしまいました・・・申し訳ない!
私のテストした環境では、「日付」でなく「1行テキスト」を使ってました・・・orz
で、あらためて「日付」形式に変更して試してみたところ、
確かに、おっしゃるとおり、「空である」はないですね。
なんでこんな仕様なんでしょう?謎です(苦笑)
─と、これで終わってはなにも解決にならないので、苦しいながら代替案を。
日付列に、規定値として、ありえない日付(例えば 1999/01/01)を指定しておきます。
ユーザが日付を指定しなかった = ありえない日付のまま、という解釈で、
条件: 日付 が 1999/01/01 に等しい(時刻を無視する)
アクション: 日付 を このリスト:更新日時 に設定する
こんなんじゃ駄目ですかね^^;;;
saruhiko- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:18
-
090518さん、こんにちは。
通りすがりの”ナマケモノSE”と申します。
私も日付を判定に使うのは苦労しました。
以下は私見です。どうしても実現したいことであるのなら
参考になるかもしれません。ただかなりダサイ方法です、その辺はご勘弁ください。
(1)ワークフローを作成しようとしているドキュメントライブラリに”集計値”列を作成します。
その際に数式を指定するのですがここで”=ISBLANK(XXXX)”と指定します(XXXXは日付フィールド名を入力します)。
また、すぐ下の”この式から返却されるデータの種類”では「はい/いいえ」を選択します。
※余談ですが、列を作成するので当然のごとく既定ビューには列が表示されます。不要と思われるのであればビューを非表示設定にする
必要があります。
(2)上記設定をした上でSharepointDesignerでワークフローを作成します。条件欄でXXXX(日付フィールド)を指定すると
後続の”値”の部分が「有効/無効」と選べるようになり空白かどうかを判定できます。
■(1)の数式で使用できる関数に関しての記述は以下を参考にしています。
http://social.msdn.microsoft.com/Forums/ja-JP/sharepointdevelopja/thread/e3d46ff9-5ee0-42e9-bfcd-61c12d1bdeac
http://sharepoint.boo.jp/index.php?e=64
saruhikoさん、引用させていただきました。- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:18
-
saruhikoさん、はじめまして。
こんな方法を回答してよかったかなと正直思いましたが
そういっていただけると幸いです。
初期値を入れておく方法が最も簡単です。
私も最初はそうしていました。
じつはこれを思いついたのは社内(というか一部の人間)で使用するチームサイトを作っていた時の話で
私の場合はこの日付フィールドは確か「承認日」でした。
で、先輩が「承認された日を入れるはずなのに初期値があるのいやだな」などといいまして
必死で今回の方法を使った次第です。まあこの方法でも新たに列が出来てしまいますし
あまりよろしくはないと思うのですが一応OKもらいました(笑)。
さて、お気づきかもしれませんがひとつ訂正があります。
(2)で「条件欄でXXXX(日付フィールド)を指定すると~」と書きましたが
これは誤りです。
正しくは(1)で作成した”集計値”列を指定します。
回答でもないのに長々失礼しました(^^;)。- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:19
すべての返信
-
どうも。
これは、シンプルです。
条件: フィールド が 値 に等しい
となっていると思いますが、
まず、フィールド は、日付フィールドを指定します。次に、値 は無視します。
に等しい を「空である」に変更します。
※「空である」を選択すると、値 は消えます。
ちなみに、この後の設定にもちょいと癖があります。
Designer の「現在のアイテムにフィールドを設定する」アクションを素直に
使うと、日付データを設定することができません。
today と書くと、そのまま「today」と表示されます(なんてお馬鹿な・・・^^;)
「現在のアイテムにフィールドを設定する」を選択し、値 については、
「ワークフロー参照の定義」で
ソース:現在のアイテム
フィールド:更新日時
を指定するといいと思います。
saruhiko- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:20
-
うわ、トンチンカンな回答をしてしまいました・・・申し訳ない!
私のテストした環境では、「日付」でなく「1行テキスト」を使ってました・・・orz
で、あらためて「日付」形式に変更して試してみたところ、
確かに、おっしゃるとおり、「空である」はないですね。
なんでこんな仕様なんでしょう?謎です(苦笑)
─と、これで終わってはなにも解決にならないので、苦しいながら代替案を。
日付列に、規定値として、ありえない日付(例えば 1999/01/01)を指定しておきます。
ユーザが日付を指定しなかった = ありえない日付のまま、という解釈で、
条件: 日付 が 1999/01/01 に等しい(時刻を無視する)
アクション: 日付 を このリスト:更新日時 に設定する
こんなんじゃ駄目ですかね^^;;;
saruhiko- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:18
-
090518さん、こんにちは。
通りすがりの”ナマケモノSE”と申します。
私も日付を判定に使うのは苦労しました。
以下は私見です。どうしても実現したいことであるのなら
参考になるかもしれません。ただかなりダサイ方法です、その辺はご勘弁ください。
(1)ワークフローを作成しようとしているドキュメントライブラリに”集計値”列を作成します。
その際に数式を指定するのですがここで”=ISBLANK(XXXX)”と指定します(XXXXは日付フィールド名を入力します)。
また、すぐ下の”この式から返却されるデータの種類”では「はい/いいえ」を選択します。
※余談ですが、列を作成するので当然のごとく既定ビューには列が表示されます。不要と思われるのであればビューを非表示設定にする
必要があります。
(2)上記設定をした上でSharepointDesignerでワークフローを作成します。条件欄でXXXX(日付フィールド)を指定すると
後続の”値”の部分が「有効/無効」と選べるようになり空白かどうかを判定できます。
■(1)の数式で使用できる関数に関しての記述は以下を参考にしています。
http://social.msdn.microsoft.com/Forums/ja-JP/sharepointdevelopja/thread/e3d46ff9-5ee0-42e9-bfcd-61c12d1bdeac
http://sharepoint.boo.jp/index.php?e=64
saruhikoさん、引用させていただきました。- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:18
-
saruhikoさん、はじめまして。
こんな方法を回答してよかったかなと正直思いましたが
そういっていただけると幸いです。
初期値を入れておく方法が最も簡単です。
私も最初はそうしていました。
じつはこれを思いついたのは社内(というか一部の人間)で使用するチームサイトを作っていた時の話で
私の場合はこの日付フィールドは確か「承認日」でした。
で、先輩が「承認された日を入れるはずなのに初期値があるのいやだな」などといいまして
必死で今回の方法を使った次第です。まあこの方法でも新たに列が出来てしまいますし
あまりよろしくはないと思うのですが一応OKもらいました(笑)。
さて、お気づきかもしれませんがひとつ訂正があります。
(2)で「条件欄でXXXX(日付フィールド)を指定すると~」と書きましたが
これは誤りです。
正しくは(1)で作成した”集計値”列を指定します。
回答でもないのに長々失礼しました(^^;)。- 回答としてマーク 鈴木裕子Support Engineer, Moderator 2009年5月26日 7:19
-
saruhikoさん、ナマケモノSEさん、ありがとうございます!!
集計値を使ってISBLANK(日付)を指定すると、思い描いた
動作をしてくれました。
最初に投稿させていただいた際に、条件の欄に
・日付フィールドが何も入力されていない場合
と記載させていただいたのですが、その条件だけではなく、
・日付フィールドに日付が入力されている場合は、入力されている日付を
そのまま残す
という条件を記載し忘れておりました。
しかし、ISBLANK(日付)を使用しましたら、この条件も満たしておりました。
現在、SharePoint Server 2007を使用する案件を何件かいただいているので、
またこのような投稿をさせていただくこともあるかと思いますが、投稿させていただく
内容をしっかりとまとめてから投稿させていただきます。
本当に、ありがとうございました。 -
こんにちは、フォーラムオペレーターの鈴木裕子です。
saruhiko さん、ナマケモノSE さん、回答ありがとうございました!
090518 さん、ご希望の動作を実現できて良かったですね(^O^)/
私自身も、皆さんの投稿を拝見しまして、「おお!ISBLANKとういうアプローチもあるのか」と。私も勉強になりました!
今回のスレッドは、内容的に情報を必要とされる方は他にもいらっしゃると思いますので、他の方がこちらを見たときに情報を見つけやすいよう、勝手ながら私のほうで[回答としてマーク]をつけさせていただきました。ただ、もし不適当と思われた場合は、遠慮なくチェックを解除してください。
これからも、SharePointに関わる技術者の皆様の情報交換の場としてForumを活用してくださいね!
ご質問・回答ともどもお待ちしております(^・^)
マイクロソフト株式会社 フォーラムオペレーター 鈴木裕子