2017-01-24 16 views
2

別のドキュメントライブラリ(アカウントドキュメント)の特定のフォルダにファイルをアップロードするときに、リスト(アカウントトラッカー)アイテムを更新するSharePointワークフローが必要です。フォルダの名前は、リストで更新される行に対応します。別のドキュメントライブラリのフォルダ名に基づいてリストを更新するSharePointワークフロー

ので、例として:へ

  1. ユーザーのアップロードドキュメント内の「エンティティ1」フォルダには、ライブラリのドキュメントアカウント]を。
  2. ワークフローの更新 'Accounts Documents'ライブラリのフォルダ名に基づいて、 'Accounts Tracker'のタイトルが 'Entity 1'の行が自動的に更新されます。

問題は、ワークフローがライブラリ内のフォルダ名を参照して、リスト内の正しい行を更新する方法ですか?

答えて

1

私が正しく理解するならば、目的は、ドキュメントが追加された親フォルダ名を取得し、その名前を使用して、その名前のタイトルをタイトルとして更新することです。

ワークフローの最も複雑な部分は、親フォルダ名を取得することです。

ドキュメントを含むフォルダの名前は、変数の現在の項目:サーバーの相対URLの一部です。

作業中に一連のアクティビティを使用して、サーバーの相対URLからフォルダ名を抽出することができます。

Stage: Find Folder Name 
    Step: Set variables 
     Set Variable: FilePAth to Current Item:Server Relative URL 
     then Set Variable: TrimmedFilePath to Variable: FilePath 
     then Set Variable: index to 0 
     then Set Variable: LastIndexOf to -1 
     then Set Variable: PreviousLastIndexOf to -1 
    Loop: until last slash is found 
     The content of this loop will run repeatedly while Variable: index is greater than or equal to 0 
      Find/in Variable: TrimmedFilePath (Output to Variable: index) 
      If Variable: index is greater than or equal to 0 
       If Variable: LastIndexOf not Equals -1 
        Set Variable: PreviousLastIndexOf to Variable: LastIndexOf 
       then Calculate Variable: LastIndexOf plus 1 (Output to Variable: LastIndexOf) 
       then Calculate Variable: LastIndexOf plus Variable: index (Output to Variable: LastIndexOf) 
       then Calculate Variable: LastIndexOf plus 1 (Output to Variable: IndexPlus1) 
       then Copy from Variable: FilePath, starting at Variable: IndexPlus1 (Output to Variable: TrimmedFilePath) 
    Step: Check foldername 
     Calculate Variable: PreviousLastIndexOf plus 1 (Output to Variable:PreviousLastIndexOfPlus1) 
     then Calculate Variable: LastIndexOf minus PreviousLastIndexOfPlus1 (Output to Variable:FolderNameLength) 
     then Copy from Variable: FilePath, starting at Variable: PreviousLastIndexOfPlus1 for Variable: FolderNameLength characters (Output to Variable: ParentFolderName) 
     If (Variable: ParentFolderName equals Workflow Context:List Name) 
      Set Variable: ParentFolderName to Root Folder 

あなたのワークフローに更新リスト項目アクティビティを追加する必要があります後。

は、ターゲットリストの要素を取得するためにParentFolderName変数を使用して、リスト項目セクションを検索します。

このヘルプが必要です。ループの

---いくつかの質問への回答

1行目は、説明だけのためにありますか? はい。ワークフローにループを追加する場合は、コメントを追加することもできます。だから最後のスラッシュが見つかるまではちょうどコメントです

2番目のループ - どのように私は "変数を見つける"のですか? ワークフローでは、文字列変数内の文字を検索するアクティビティがあります。これは、JavaScriptのindexOfに似たものです。このワークフローでは、スラッシュ«/»文字を見つける必要があります。目標は、URL内で親フォルダを取得することです。 URL内の最後のスラッシュを探すことで見つけることができます。

9行目のループ - 何文字ですか?私のワークフローでは0がデフォルトです。 文字数は自動的に計算されます。 IndexPlus1という名前の変数を探します。

チェックの第4行 - ワークフローコンテキストで「リスト名」を使用できません。「関連名」は使用できますか? 私はあなたがリスト名を得ることができない理由を知りません。たぶん、別のSP 2013ワークフローを作成して、同じ問題が発生するかどうか確認できますか?

チェックの5番目の行は、 "ルートフォルダ"がハードフォーマットされている、つまりルックアップではありませんか? はい。ルートフォルダはハードコードされています。

+0

こんにちはシルバン。あなたの詳細な対応をありがとうございます - あなたが行った努力に感謝します。残念ながら、ワークフローの実行時にエラーが発生します。いくつか確認していただけますか? – sturleydog

+0

詳細な返答いただきありがとうございます、私は努力を感謝します - 残念ながら、ワークフローが実行されるとエラーが発生します。 いくつか確認してもよろしいですか? - ループの1行目は説明用です。 - 2行目のループ - 「変数を見つける/変更する」方法は? - ループの9行目 - 何文字ですか?私のワークフローでは0がデフォルトです。 - チェックの4行目 - ワークフローコンテキストで「リスト名」を使用できません。「関連名」は使用できますか? - チェックの5行目は、 "ルートフォルダ"がハードフォーマットされている、つまりルックアップではありませんか? – sturleydog

+0

私はあなたの質問に私のポストでいくつかの答えを追加します。 –

関連する問題