You cannot change material parameters on a per-instance basis because all of the instances are rendered in a single draw call with no material setting in between (which is part of what makes them faster to render).
But there is a PerInstanceRandom material node that will give you a consistent random number assigned to each instance. You could use that number to generate a color or as a texture coordinate to look up a value from a 1xn texture that you create with a different color in each pixel. That will give each book a consistent but different color.