How about this answer? Please think of this as just one of several possible answers.
Issue and workaround:
I think that the reason of your issue is that 3669516009270899211
of "registrantKey":3669516009270899211
is used as the number. In Javascript, the maximum integer value is 9007199254740991
. Ref So when 3669516009270899211
is converted to the number, it becomes 3.6695160092708992E18
and when this is converted to the string, it becomes 3669516009270899000
.
So in this case, as one of several workaround, how about enclosing 3669516009270899211
by the double quotes like "registrantKey":"3669516009270899211"
? By this, "3669516009270899211"
is used ad the string, and you can retrieve the value of 3669516009270899211
.
Modified script:
When your script is modified, how about the following modification?
From:
var resp = UrlFetchApp.fetch(url,options)
var json=JSON.parse(resp);
return json
To:
var resp = UrlFetchApp.fetch(url,options);
resp = resp.getContentText().replace(/registrantKey":(\d.+),/, "registrantKey\":\"$1\","); // Added
var json=JSON.parse(resp);
return json
Note:
As the test script, you can also use the following script.
var str = '{"joinUrl":"https://example.com","asset":true,"registrantKey":3669516009270899211,"status":"APPROVED"}';
str = str.replace(/registrantKey":(\d.+),/, "registrantKey\":\"$1\",");
var obj = JSON.parse(str);
Logger.log(obj)
Reference:
If I misunderstood your question and this was not the direction you want, I apologize.