I am trying to automatically send an envelope with Docusign when a Google form is submitted. I have written the following code in the Google Script Editor
// When Form Gets submitted
function onFormSubmit(e) {
//Get information from form and set our variables
var full_name = e.values[2];
var email_address = e.values[3];
// Send the email
var subject = "TEST trigger";
var body = "Thank you for testing" + full_name + "";
MailApp.sendEmail(email_address,
subject,
body);
var url = "https://demo.docusign.net/restApi/v2/accounts/<accountname>/envelopes";
var payload =
{
"emailSubject": "Please sign stuff",
"emailBlurb": "TesttextTesttextTesttextTesttextTesttext",
"templateId": "7078020e-49a0-42c6-b77d-368211d4a666",
"templateRoles": [
{
"roleName": "client",
"name": full_name,
"email": email_address
},
{
"roleName": "name",
"name": "name",
"email": "emailaddress"
},
{
"roleName": "name2",
"name": "name2",
"email": "emailaddress2"
}
],
"status": "sent"
}
var options =
{
"contentType": "application/json",
"method" : "post",
"headers":
{
"X-DocuSign-Authentication": "{\"Username\":\"<username>\",\"Password\":\"<pw>\",\"IntegratorKey\":\"<integratorkey>"}"
},
"payload" : payload
};
UrlFetchApp.fetch(url, options);
}
I get the following error message and it seems there is something wrong with the formatting:
POST https://demo.docusign.net:7802/restApi/v2/accounts/<accountid>/envelopes
TraceToken: 0304eb5f-1188-4880-a22c-861839f4e8d9
Timestamp: 2016-10-25T09:40:49.0423980Z
Content-Length: 187
Content-Type: application/json
Connection: Keep-alive
Host: demo.docusign.net
User-Agent: Mozilla/5.0(compatible; Google-Apps-Script)
X-DocuSign-Authentication: {"Username":"<email>","Password":"[omitted]","IntegratorKey":"[omitted]"}
X-BROKER-EVENT-ID: AHI413WWv-VgeLRQbOpMQH-Y6J-93aHL4h5phAVpXeXUqK8RsYof90Eu68CI-LkC1Ef4FM8Hac-1
X-Forwarded-For: 107.178.192.41
X-SecurityProtocol-Version: TLSv1.2
X-SecurityProtocol-CipherSuite: ECDHE-RSA-AES256-GCM-SHA384
Accept: application/json
emailBlurb=TesttextTesttextTesttextTesttextTesttext&templateRoles=%5BLjava.lang.Object;@3449f174&templateId=7078020e-49a0-42c6-b77d-368211d4a666&emailSubject=Please+sign+stuff&status=sent
400 BadRequest
Content-Type: application/json; charset=utf-8
{
"errorCode": "INVALID_REQUEST_BODY",
"message": "The request body is missing or improperly formatted. Unexpected character encountered while parsing value: e. Path '', line 0, position 0."
}
Any help on how to proceed would be great.
I think the problem is that you're specifying that you are submitting data in JSON format, and the server is presumably expecting that but in fact your data is not in that format.
By default, when encountering a JavaScript object as an argument to the
payload
option, as you are providing, Apps Script with encode it as a form data.Instead of specifying:
You need to specify:
This should help.