Here's a shot at it. No guarantees, but this is a way to use python to create field maps on the fly. You'd use the Calculate Value expression: make_maps(r"%Input features%"), paste the code below into the code block parameter, and set the output data type to Field Map so you could connect it as a parameter to the Append tool. You'd also have to hard code your from-name and to to-names in the code block into the dictionary I called renames.
Your mileage may vary, but this an approach to consider. You may be stuck with the "poor man method", but that would sure be a lot extra work.
def FieldNameMap(tbl, maps):
"""Easy field mappings generator
arguments
tbl - input feature class, table, or table view
maps - field names map list (';'-delimited string of field name pairs)
example
import arcpy
Maps = "Shape_Area AREA;BID BID2;AREASQMI AREAMI2"
Mapper = FieldNameMap("temp.dbf", Maps)
print Mapper.exportToString().replace(";","\n")
arcpy.Merge_management("temp.dbf", "temp2.dbf", Mapper)
author
Curtis Price, U.S. Geological Survey, cprice@usgs.gov
Not reviewed/approved use at your own risk
"""
field_mappings = arcpy.FieldMappings()
mapList = maps.split(';')
for rec in mapList:
fromName,toName = rec.split()
field_map = arcpy.FieldMap()
try:
field_map.addInputField(tbl, fromName)
field = field_map.outputField
field.name = toName
field_map.outputField = field
field_mappings.addFieldMap(field_map)
except:
raise Exception(
"FieldNameMap: Cannot not map fields ({}) in {}".format(rec,tbl))
return field_mappings
renames = {"DRAINS":"DRAINS",
"PERSONS":"PEOPLE"}
def make_maps(tbl):
fnames = [f.name.upper() for f in arcpy.ListFields(tbl)]
maps = []
for f in fnames:
for r in renames:
if f.find(r) > -1:
maps.append("{} {}".format(f,renames[f]))
break
maps = ";".join(maps)
return FieldNameMap(tbl, maps).exportToString