Link one object's property to another object's different property New to Blender and just can't find a way to do this after a few days of googling. Any help much appreciated!

Is it possible to link the value of one object's animation Channel (for example the X-Location keyframe values) to another object (for example its Y location)

I don't want to copy the keyframes from one to the other. I would like the two to be dynamically linked so that moving the first object (adding keyframes) along the X axis automatically moves/adds keyframes to the second object along its Y axis.

Ideally I would also like to be able to alter the keyframe values being linked - so for example, Object1's X Location value when linked to Object2's Y Location value might be offset by 50 and inverted about the y-axis [ Object2_YPos = -(Object1_XPos+50) ]. Or the difference between Object1's X and Y co-ordinates would dictate the size of Object2 [ Object2_Scale = Object2_Scale*(Object1_YPos-Object1_XPos) ] that kind of thing.

For any of you who know Adobe AfterFX, I'm hoping to do something like linking with expressions:
https://helpx.adobe.com/after-effects/using/expression-basics.html#edit_an_expression_with_the_pick_whip

The big picture: I have complex data imported from a CSV file that includes a long list of three data points over time:

0,10,5,120
2,20,5,100
3,30,15,120
etc.


I've successfully imported this data and added it to my objects as keyframes. The first value is the frame number, then the different objects use each of the following values along different axis. So Object1 reads the CSV as:

frameNum,xLoc,yLoc,zLoc


and Object2 uses a slightly different import template:

frameNum,yLoc,xLoc,zLoc


The problem is that I end up with the same data in two different Actions which seems inefficient (I have a lot of data points; 1 per frame over 50000+ frames). Is it possible to have an Action that exists once in the Dope Sheet editor but which is used in different ways by different objects?

Update: As I typed this, 'Similar Questions' started to appearing which seem to suggest that the answer might be Drivers and/or animation nodes. All very new to me, so I'll go and investigate and post a reply to myself if I solve it. In the meanwhile, can anyone help point me in the right direction? I'll be very grateful for any help, advice and/or exemplar blender files as I find the docs a little cryptic at times :)
This is a classic case for using drivers.

Drivers are a bit tricky to master BEFORE you know what they're good for, but your case describes a very good example for their use.

Drivers allow you to use one property (or several) to drive another. There are several types of drivers, one of which is an expression where you can use arithmetic operators and mathematical functions. This is really useful when you want to create offset / inverted / factored relationship between the driving and driven properties (which seems to be what you are looking for. For instance advance 2 units in object1.location.y for each unit of object2.location.x).

It will be rather cumbersome to explain how to create and manipulate drivers here in text, but there are quite a few excellent video tutorials (such as this one) that will get you quickly acquainted with drivers.

Once you've grasped how to add and manipulate drivers via the UI, you can automate the process via python.