Use both ObjectLayer() & CopyObject(), Input Type GUID or Curve?

Hi I am using gh python on curves.
ObjectLayer() to get input curves layer, and CopyObject() to copy them
ObjectLayer() only works if I set input param to GUID,
CopyObject() only works if I set input param to Curves, or ghdoc object

I am looking at these two posts but still stuck

So I am currently setting to GUID
sc.doc = Rhino.RhinoDoc.ActiveDoc
id = rs.ObjectLayer(geo)
sc.doc = ghdoc
The above ObjectLayer(geo) is working

    copy = rs.CopyObject(geo) 

The above not working, input “geo” prints a GUID but “copy” prints None
How can I get the convert GUID to Curve to make CopyObject() work?

This works. Set input “crvid” param to GUID

sc.doc = Rhino.RhinoDoc.ActiveDoc
lay = rs.ObjectLayer(crvid) #doesnt matter inside outside the sc.doc switch
print(lay)
crv = rs.coercecurve(crvid) #must be inside the sc.doc switch
sc.doc = ghdoc
crvcopy = rs.CopyObject(crv) #must be outside the sc.doc switch