Batch adding filters to schedules via python

I am trying to Add Filter to schedules via python script:

# Load the Python Standard and DesignScript Libraries
import sys
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

# The inputs to this node will be stored as a list in the IN variables.
scheduleViews = UnwrapElement(IN[0])
filterFieldNames = IN[1]
filterFieldValues = IN[2]

# Place your code below this line
doc = DocumentManager.Instance.CurrentDBDocument

def GetField(schedule, fieldName):
	definition = schedule.Definition
	for i in range(0, definition.GetFieldCount(), 1):
		if definition.GetField(i).GetName() == fieldName:
			field = definition.GetField(i)
			return field
i = 0
while i < len(scheduleViews):
	TransactionManager.Instance.EnsureInTransaction(doc)
	filterField = GetField(scheduleViews[i], filterFieldNames[i])
	scheduleFilter = ScheduleFilter(filterField.FieldId, ScheduleFilterType.Equal, filterFieldValues[i].Id);
	scheduleViews[i].Definition.AddFilter(scheduleFilter)
	TransactionManager.Instance.TransactionTaskDone()
	i += 1
	
# Assign your output to the OUT variable.
OUT = 0

But every time i run the script i got:
The filter value is not valid for the field and filter type. Parameter name: filter
what is wrong with my script?
Thank You;

Hello @ahmadmahrous_1
you need to unwrap your list of Element (levels ?) to expose them to Revit API

filterFieldValues = UnwrapElement(IN[2])

2 Likes