# How to rename Worksets?

**URL:** <https://forum.dynamobim.com/t/how-to-rename-worksets/19610>\
**Category:** Developers\
**Tags:** python\
**Created:** [March 2, 2018, 6:35pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610 "2018-03-02T18:35:43Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![jaclyn.s](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jaclyn.s](https://forum.dynamobim.com/u/jaclyn.s)\
**Post date:** [March 2, 2018, 6:35pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/1 "2018-03-02T18:35:43Z")

</div>

Hi - I am trying to batch rename Worksets. Admittedly I don’t have much experience with python and am really guessing at the modifications required to rename in batch vs. by single workset.

"  
import clr  
clr.AddReference(‘RevitAPI’)  
from Autodesk.Revit.DB import \*

clr.AddReference(‘RevitNodes’)  
import Revit  
clr.ImportExtensions(Revit.GeometryConversion)  
clr.ImportExtensions(Revit.Elements)

clr.AddReference(‘RevitServices’)  
import RevitServices  
from RevitServices.Persistence import DocumentManager  
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument

#Converting input from Dynamo to Revit

workset = UnwrapElement(IN[0])  
names = IN[1]

#rename workset in a transaction  
TransactionManager.Instance.EnsureInTransaction(doc)

WorksetTable.RenameWorkset(doc,workset.Id,name);

TransactionManager.Instance.TransactionTaskDone()

OUT = worksets  
";

Complete script;

[ReName Worksets.dyn](https://forum.dynamobim.com/uploads/short-url/3DMkanKkJq5rCZOf8wIHvi2QxZX.dyn) (14.4 KB)

Thanks for any help!!

---

<div class="post-metadata">

**Author:** ![awilliams](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/awilliams/32/114496_2.png) [@awilliams](https://forum.dynamobim.com/u/awilliams)\
**Post date:** [March 2, 2018, 7:24pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/2 "2018-03-02T19:24:48Z")

</div>

You have to iterate over your lists of worksets and names using a [ForLoop](https://wiki.python.org/moin/ForLoop) and [zip()](https://docs.python.org/2/library/functions.html#zip)

```
import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIDocument

worksets = UnwrapElement(IN[0])
names = IN[1]

TransactionManager.Instance.EnsureInTransaction(doc)

for workset, name in zip(worksets,names):
	WorksetTable.RenameWorkset(doc,workset.Id, name)

OUT = worksets

```

Let me know if this works

---

<div class="post-metadata">

**Author:** ![jaclyn.s](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jaclyn.s](https://forum.dynamobim.com/u/jaclyn.s)\
**Post date:** [March 2, 2018, 8:13pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/3 "2018-03-02T20:13:01Z")

</div>

Hi @awilliams - thank you for your help!!

I get;  
IronPythonEvaluator.EvaluateIronPythonScript operation failed.  
unexpected token ‘‘’

---

<div class="post-metadata">

**Author:** ![awilliams](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/awilliams/32/114496_2.png) [@awilliams](https://forum.dynamobim.com/u/awilliams)\
**Post date:** [March 2, 2018, 8:26pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/4 "2018-03-02T20:26:45Z")

</div>

Hmm I don’t see any extraneous apostrophes in the code I pasted so I’m thinking maybe just a copy/paste error? Try deleting all the contents of your Python script node and repasting

---

<div class="post-metadata">

**Author:** ![Konrad\_K\_Sobon](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/konrad_k_sobon/32/8838_2.png) [@Konrad\_K\_Sobon](https://forum.dynamobim.com/u/Konrad_K_Sobon)\
**Post date:** [March 3, 2018, 2:57pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/5 "2018-03-03T14:57:31Z")

</div>

This would pop up if you mixed tabs and spaces in the same file. I would just go through it and check that you are consistently using one or the other.

---

<div class="post-metadata">

**Author:** ![awilliams](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/awilliams/32/114496_2.png) [@awilliams](https://forum.dynamobim.com/u/awilliams)\
**Post date:** [March 3, 2018, 9:20pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/6 "2018-03-03T21:20:25Z")

</div>

I ran the script above and it worked without error so it must be a copy/paste slip up, but thank you for that info! I read the error quickly and thought I saw “’” (an apostrophe). Good to know in case I run into that error on my end at some point

---

<div class="post-metadata">

**Author:** ![Konrad\_K\_Sobon](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/konrad_k_sobon/32/8838_2.png) [@Konrad\_K\_Sobon](https://forum.dynamobim.com/u/Konrad_K_Sobon)\
**Post date:** [March 4, 2018, 8:25pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/7 "2018-03-04T20:25:19Z")

</div>

Ha, my bad. If it’s really just an apostrophe then you are totally right. It would not show that message. Any message about illegal characters or unexpected new line, could be caused by what I was referring to.

---

<div class="post-metadata">

**Author:** ![salvatoredragotta](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/salvatoredragotta/32/10078_2.png) [@salvatoredragotta](https://forum.dynamobim.com/u/salvatoredragotta)\
**Post date:** [March 5, 2018, 1:21am UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/8 "2018-03-05T01:21:28Z")

</div>

Could you show a screen shot of your graph and error?

---

<div class="post-metadata">

**Author:** ![jaclyn.s](https://avatars.discourse-cdn.com/v4/letter/j/ebca7d/32.png) [@jaclyn.s](https://forum.dynamobim.com/u/jaclyn.s)\
**Post date:** [March 5, 2018, 3:02pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/9 "2018-03-05T15:02:10Z")

</div>

Hi @awilliams, @Konrad_K_Sobon, @salvatoredragotta

I realized I was making a very beginner mistake 😳 and importing the script as a string.

I am getting an error that the ‘GIven Workset Name is already in use’?

 ![Capture](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/4/547c82b9a40adaccd684966f240ad33c7197946d.JPG)

Thank you for your help!!

---

<div class="post-metadata">

**Author:** ![Konrad\_K\_Sobon](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/konrad_k_sobon/32/8838_2.png) [@Konrad\_K\_Sobon](https://forum.dynamobim.com/u/Konrad_K_Sobon)\
**Post date:** [March 6, 2018, 8:26pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/10 "2018-03-06T20:26:52Z")

</div>

That’s pretty self explaining…given name is already used. Workset names must be unique.

---

<div class="post-metadata">

**Author:** ![omararafa43](https://avatars.discourse-cdn.com/v4/letter/o/4bbf92/32.png) [@omararafa43](https://forum.dynamobim.com/u/omararafa43)\
**Post date:** [February 8, 2019, 5:06pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/11 "2019-02-08T17:06:15Z")

</div>

I tyring to rename this worksets to uppercase but it appears that the code have an error the python show Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.  
Traceback (most recent call last):  
File “”, line 21, in   
TypeError: expected WorksetId, got int[test.dyn](https://forum.dynamobim.com/uploads/short-url/kqUw1t9zFDmPZuhxmXru4mPscC0.dyn) (22.7 KB)

---

<div class="post-metadata">

**Author:** ![bll](https://avatars.discourse-cdn.com/v4/letter/b/e68b1a/32.png) [@bll](https://forum.dynamobim.com/u/bll)\
**Post date:** [June 2, 2021, 6:38am UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/12 "2021-06-02T06:38:03Z")

</div>

Same issue. checked in Cpython3 and same error:  
No method matches given arguments for RenameWorkset: (\<class ‘Autodesk.Revit.DB.Document’\>, \<class ‘int’\>, \<class ‘str’\>)  
seems workset.Id gives back an int and not the WorksetId element(that RenameWorkset wants).

---

<div class="post-metadata">

**Author:** ![c.poupin](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/c.poupin/32/89152_2.png) [@c.poupin](https://forum.dynamobim.com/u/c.poupin)\
**Post date:** [June 2, 2021, 11:16am UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/13 "2021-06-02T11:16:07Z")

</div>

Hello  
a workaround

```auto

import clr

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIDocument

worksets = UnwrapElement(IN[0])
names = IN[1]

TransactionManager.Instance.EnsureInTransaction(doc)

for workset, name in zip(worksets,names):
	if isinstance(workset.Id, int):
		WorksetTable.RenameWorkset(doc,WorksetId(workset.Id), name)
	else:
		WorksetTable.RenameWorkset(doc,workset.Id, name)

TransactionManager.Instance.TransactionTaskDone()

OUT = worksets

```

---

<div class="post-metadata">

**Author:** ![bayowindapo](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/bayowindapo/32/184532_2.png) [@bayowindapo](https://forum.dynamobim.com/u/bayowindapo)\
**Post date:** [April 19, 2022, 11:32am UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/14 "2022-04-19T11:32:48Z")

</div>

Many thanks!

---

<div class="post-metadata">

**Author:** ![MReza](https://avatars.discourse-cdn.com/v4/letter/m/8baadc/32.png) [@MReza](https://forum.dynamobim.com/u/MReza)\
**Post date:** [February 17, 2023, 6:04am UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/15 "2023-02-17T06:04:54Z")

</div>

![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/5/d/5da6598da9542df54db853aeebda1be1305a4f39.png)  
Hi all, I seem to be having different issue here. The script runs with no warning but it only takes the first character of the intended Workset name. Anyone have a clue what could be causing this ??

---

<div class="post-metadata">

**Author:** ![c.poupin](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/c.poupin/32/89152_2.png) [@c.poupin](https://forum.dynamobim.com/u/c.poupin)\
**Post date:** [February 28, 2023, 1:43pm UTC](https://forum.dynamobim.com/t/how-to-rename-worksets/19610/16 "2023-02-28T13:43:08Z")

</div>

@MReza

put the input name into a list with brackets **[]** (in the Code Block node)

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/7/7/774a39347a5b628d58425a84f4b8bb7cd73c73f6.jpeg)
