Perhaps you could try List.PositionOf to check if the column name is in the list?

That function will return -1 if the column name you are looking for isn't found.

if List.PositionOf(Table.ColumnNames(Source), "Colors" ) = -1 then Table.AddColumn(Source, "Colors", each "", type text) else Source