Are you using the building area method for lighting, but not for other internal loads and occupancy? If you were using building area method across all internal loads, you could just assign a space type to each Building Story. You would only need to do this if you had a different BAM value for each building story; otherwise you could just assign the space type for the building.
But if you are modeling occupancy and non-lighting internal loads by space type with many unique space types, and want BAM lighting the same across the building or story, you can take another approach. Multiple space types can refer to the same lighting definition. When you change that definition and it affects all space types using it. This would allow you to vary the BAM number easily if you wanted to.
As you mentioned, there is always the option of having space types with no lighting, and then applying lighting individually to each space. This would be a pretty easy measure to write that could be applied with "Apply Measures Now". would look something like this. You could add an argument for LPD for each building story.
model.getBuildingStories.each do |story|
story.spaces.each do |space|
space.setLightingPowerPerFloorArea(target_lpd)
end
end
setLightingPowerPerFloorArea may be heavy handed. It will make space type unique if needed and remove any existing lights. It may work cleanly without altering space type assignments if the space type doesn't have any lights, but I have not tested that. If not you can have code loop through and remove lights and then add new ones. Either approach allows you to run this multiple times without stacking up too many lights in the space.