Apply All Modifiers via Add-On?
based on this answer https://blender.stackexchange.com/a/7197

import bpy

context = bpy.context
bpy.ops.object.mode_set(mode='OBJECT')

for ob in bpy.context.selected_objects:
    n = len(ob.modifiers)
    if (n) and (ob.type not in ('LAMP','CAMERA','ARMATURE','EMPTY')):
        print ("Applying " + str(n) +  " modifiers on object " + ob.name)
        oldmesh = ob.data
        ob.data  = ob.to_mesh(context.scene,True, 'PREVIEW')
        ob.modifiers.clear()
        bpy.data.meshes.remove(oldmesh)