Resources.Load only works if the asset is somewhere under a folder named "Resources" (and you can have multiple "Resources" folders).
If you want to load with the string "ScriptablesObjects/GameSaves/Princess" then the path on the filesystem must be "Assets/Resources/ScriptablesObjects/GameSaves/Princess"
Here are the relevant details from the linked documentation:
Loads an asset stored at path in a folder called Resources.
Returns the asset at path if it can be found otherwise returns null.
Only an object of type T will be returned. The path is relative to any
folder named Resources inside the Assets folder of your project. More
than one Resources folder can be used. For example, a project may have
Resources folders called Assets/Resources and Assets/Guns/Resources.
String names that include Assets and Resources are not needed. For
example the loading of a GameObject at
Assets/Guns/Resources/Shotgun.prefab does not use the folder names.
Also, if Assets/Resources/Guns/Missiles/PlasmaGun.prefab exists it
will be loaded using Prefabs/Missiles/PlasmaGun. If you have multiple
Resources folders you cannot duplicate use of an asset name.
Another example of the Resources folder. In Resources there are two
files, fancyA and fancyB. Resources also has Resources2 folder. This
folder contains two files, fancyA2 and fancyB2. Finally, Resources2
has a folder called Resources3 with a single file also called fancyB.
(This means the file in Resources3 has the same name as in Resources.)
The files in Resources can be loaded as fancyA and fancyB with no need
for the folder hierarchy Assets/Resources. Also, the files in
Resources2 can be loaded. Loading these require the folder directory
so an example load will be Resources2/fancyB2. Finally, loading from
Resources3 will be Resources2/Resources3/fancyB.
Note: Extensions must be omitted. Note: All asset names and paths in
Unity use forward slashes, paths using backslashes will not work.