I’ve defined a new API-type Server Script used to update custom fields in the Issue doctype. I’d like to be able to call this script from various DocType-event-type Server Scripts. Is this possible?
I’ve tried playing around with the
run_script method, but I can’t seem to pass parameters. Is there another way?
Any ideas or suggestions out there?
safe_exec environment maintains its own set of flags.
Thanks Rushabh! That makes a lot of sense. I saw reference to flags in the documentation, but I’m realizing now that I misunderstood how they worked.
This works perfectly.
Actually, I’m still failing to get this to work. I’m able to use flags to return values, but not to send values.
script_1 (doc event):
frappe.flags.my_key = "test flag"
…isn’t working for me. Am I misunderstanding?
Anyone know if this is possible?
I’m still trying to understand if I’m just not doing something correctly or if this functionality is not available.
Is it possible to send parameters or flags from one custom script to another?
Trust you’re doing great. Were you able to work this out ? If so, pls share how
Also, I’d really appreciate if you could share any sample(s) of working API Server Scripts
This wasn’t possible last year, but I believe it might be now. As of the latest v13 release,
frappe.call has been added the Script API safe execution roster. I haven’t had a chance to play with it yet, but I suspect it should work.
Great! Any sample API script you can share ?
Nope, like I said, I haven’t had a chance to play with it yet.
Oh, sorry… thot you were referring specifically to calling the API script from another server script
Oh, yeah, I was talking about that. For regular api server scripts, we have dozens going on our company’s server. Most are pretty specialized to internal processes and integrations, so I’m not sure much would be useful to share, but if you have any questions feel free to make a thread and tag me.
frappe.flags.my_key = ‘my value’
my_key = run_script(‘script_1’).get(‘my_key’)
found this in here
unfortunately its saying
The resource you are looking for is not available
Any idea on how to get the response back.
If we use the same api server script in client side we are able to get the response
but if we call the api script from another server script the script is getting executed. But not sure on how to get the response back.
to get the response back set the below
frappe.flags.message = l_response inside the server script api
The flow goes like this
define a server script api say ‘my_api_server_script’
let’s assume the above script takes two arguments arg 1 and arg2
to fetch the args inside the api script
arg1 = frappe.form_dict.get('arg1')
arg1 = frappe.form_dict.get('arg2')
perform rest of code
finally send the result in frappe.flags
#to get the response from the server side
frappe.flags.message = result
#if you want to use the script from the client side
frappe.response["message"] = result
now you can call the api script from another server script like below
response = frappe.call("my_api_server_script", arg1 = value1, arg2 = value2)
result = response["message"]
Hope this helps