Clear Custom Split Normals Data - Many Objects
I came across this question when I was googling about the same problem. This worked for me.
import bpy

selection = bpy.context.selected_objects

for o in selection:
    bpy.context.view_layer.objects.active = o
    try:
        bpy.ops.mesh.customdata_custom_splitnormals_clear()
    except:
        pass