Any idea how to fit text width to screen
Simple Driver

A possible solution could be adding a Scripted Expression Driver to the Font Size Property:

fact / len(bpy.data.objects['Text'].data.body)


where: 

fact is the multiplier that determines the Font Size (in this case fact = 1)

Text is the object name





Reference

This solution is "text agnostic" (since it is based on dimensions, it works with every characters)

Make a linked copy (Alt + D) of the text object and use the copy as reference to calculate the scale.


Add drivers to the Scale Property 
Use this formula in the X Scale
Driver (see picture below):

0.7 * container/reference 


where:

container is a new variable from container dimension.x (the blu rectangle)

reference is a new variable from reference dimension.x (the linked copy of the text object)

0.7 is the factor to fit the text into the container
Copy the X Scale Value to the Y Scale Value:




This is the final result:



Changing the reference and container size, the text size will change accordingly.

Move the reference object on a hidden layer...