如何将Google表格和Docusign API与Google脚本相关联?

时间:2016-11-08 12:02:33

标签: google-apps-script docusignapi google-spreadsheet-api

我正在尝试在提交Google表单时自动向Docusign发送信封。我在Google脚本编辑器中编写了以下代码

// 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);
 }

我收到以下错误消息,似乎格式化有问题:

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."
}

任何有关如何进行的帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

我认为问题在于您指定要以JSON格式提交数据,而服务器可能是期望的,但实际上您的数据不是那种格式。

默认情况下,当遇到JavaScript对象作为payload选项的参数时,正如您所提供的那样,Apps脚本将其编码为表单数据。

而不是指定:

// Payload is a JS object and will be encoded as formdata by default
"payload" : payload

您需要指定:

// Payload is now a JSON representation of the payload variable.
"payload" : JSON.stringify(payload)

这应该有所帮助。