Translate object using lowest Z value python
Here is a simple script that accomplishes this...let me know if you have any questions.

import bpy

# get a reference to the active object
obj = bpy.context.object

# get the minimum z-value of all vertices after converting to global transform
lowest_pt = min([(obj.matrix_world * v.co).z for v in obj.data.vertices])

# transform the object
obj.location.z -= lowest_pt


Note

For 2.8 replace * with @ for matrix multiplication.

lowest_pt = min([(obj.matrix_world @ v.co).z for v in obj.data.vertices])