Amon
This horrifying one liner can get the tile's data :
var tile_data : TileData = collision.get_collider().get_cell_tile_data(0, collision.get_collider().local_to_map(collision.get_collider().to_local(collision.get_position() - collision.get_normal())))
This part :
collision.get_collider().local_to_map(collision.get_collider().to_local(collision.get_position() - collision.get_normal()))
Gets the tile's position in the tilemap by subtracting the collision's normal from it's position to make sure the position is inside the right tile, then converting that to the tilemap's local space, and finally converting that local position to the tile's cell coordinates.