Hello @hrasmussen
try this method (find the corresponding field by Name in list of Schedulable Field)
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
def findFieldByName(scheduleDef, fieldName):
fieldIds = scheduleDef.GetFieldOrder()
for fieldId in fieldIds:
if scheduleDef.GetField(fieldId).GetSchedulableField().GetName(doc) == fieldName:
return fieldId
return None
templateSchedule1 = UnwrapElement(IN[0])
scheduleToSet = UnwrapElement(IN[1])
TransactionManager.Instance.EnsureInTransaction(doc)
#get Name of ScheduleField from Template
templ_scheduleDef1 = templateSchedule1.Definition
fieldId1 = templ_scheduleDef1.GetFieldOrder()[0]
scheduleFieldTName1 = templ_scheduleDef1.GetField(fieldId1).GetSchedulableField().GetName(doc)
#from Schedule Instance create filter
scheduleDefToSet = scheduleToSet.Definition
searchFieldId = findFieldByName(scheduleDefToSet, scheduleFieldTName1)
newSchFilter1 = ScheduleFilter(searchFieldId, ScheduleFilterType.Equal, "Test")
scheduleDefToSet.AddFilter(newSchFilter1)
TransactionManager.Instance.TransactionTaskDone()
OUT = scheduleDefToSet