我需要一个SharePoint工作流,当文件上传到单独的文档库(Accounts Documents)中的特定文件夹时,它将更新列表(Accounts Tracker)项。该文件夹的名称将对应于列表中要更新的行。
所以,举个例子:
问题是工作流如何引用库中的文件夹名称来更新列表中的正确行?
答案 0 :(得分:2)
所以,如果我理解正确的话,目标是获取已添加文档的父文件夹名称,然后使用该名称更新名称为title的列表项。
工作流程中最复杂的部分是获取父文件夹名称。
包含文档的文件夹的名称是变量当前项目:服务器相对URL 的一部分。
您可以在worklow中使用一系列活动从服务器相对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 变量检索目标列表元素。
希望这有帮助!
---回答一些问题
Loop的第一行仅供参考? 是。在工作流中添加循环时,还可以添加注释。所以«直到找到最后一个斜杠»只是一个评论
第二行循环 - 如何“查找/变量”? 在工作流程中,您有一个活动可以在字符串变量中查找字符。它与JavaScript中的indexOf类似。在此工作流程中,我们需要找到斜杠«/»字符。请记住,目标是将父文件夹放在URL中。我们可以通过搜索URL中的最后一个斜杠来找到它。
第9行循环 - 有多少个字符?我的工作流程默认为0。 字符数将自动计算。查找名为IndexPlus1
的变量第4行检查 - 我在工作流程上下文中没有“列表名称” - 我可以使用“关联名称”吗? 我不知道为什么你不能得到列表名称。也许你可以尝试创建另一个SP 2013工作流程,看看你是否遇到同样的问题?
第5行检查 - 是“根文件夹”硬格式化,即不是查找? 是。根文件夹是硬编码的。