Как использовать информацию из Google Forms / Docs в Docusign и наоборот?

#google-apps-script #docusignapi #google-docs-api #google-sheets-api

#google-apps-script #docusignapi #google-docs-api #google-sheets-api

Вопрос:

Я хотел бы использовать информацию из формы Google (при отправке) для отправки конверта из шаблона с использованием Docusign api.

После заполнения конверта я хочу отправить другую форму Google и документ Google одному и тому же человеку. Кроме того, я хотел бы отправить несколько электронных писем после выполнения шагов.

Я рассмотрел использование Google Apps Script, который работает для форм, документов и электронных писем, но я не могу понять, как запустить Docusign api оттуда. Любая помощь приветствуется.

ОБНОВЛЕНИЕ: на основе вашей справки я придумал следующее. Когда я запускаю приведенный ниже код, я получаю сообщение об ошибке: «Указанный ключ интегратора не найден или отключен. Ключ интегратора не был указан.». Ключ интегратора активен, но может ли это иметь какое-то отношение к URI перенаправления или секретному ключу? У меня нет их настройки.

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

// SEND DOCUSIGN ENVELOPE FROM TEMPLATE

   var url = "https://demo.docusign.net/restApi/v2/accounts/<accountid>/envelopes";

   var payload =
   {
  "emailSubject": "Please sign stuff",
  "emailBlurb": "TesttextTesttextTesttextTesttextTesttext",
  "templateId": "<templateID>",
  "templateRoles": [
    {
      "roleName": "role1",
      "name": full_name,
      "email": email_address
    },
    {
      "roleName": "role2",
      "name": "John Doe",
      "email": "JohnDoe@email.com"
    },
    {
      "roleName": "role3",
      "name": "Joe Smith",
      "email": "joesmith@email.com"
    }
  ],
  "status": "sent"
   }

   var options =
   {
     "method" : "post",
     "header": 
     {
    "X-DocuSign-Authentication": "{"Username":<username>","Password":"<passwork>","IntegratorKey":"<integratorkey>"}"
  },
     "payload" : payload
   };

   UrlFetchApp.fetch(url, options);
 }
  

ОБНОВЛЕНИЕ: я изменил header на headers , но теперь я получаю другую ошибку. Эргин, как ты и предлагал, я зарегистрировал запрос. Ниже приведено сообщение об ошибке. Кажется, что что-то не так с типом содержимого.

 POST https://demo.docusign.net:7802/restApi/v2/accounts/<accountID>/envelopes

TraceToken: <token>
Timestamp: 2016-10-24T07:24:27.6912557Z

Content-Length: 187
Content-Type: application/x-www-form-urlencoded
Connection: Keep-alive
Host: demo.docusign.net
User-Agent: Mozilla/5.0(compatible; Google-Apps-Script)
X-DocuSign-Authentication: {"Username":"<my email address>","Password":"[omitted]","IntegratorKey":"[omitted]"}
X-BROKER-EVENT-ID: AHI413UAlYti8n93Pw-ZxoDmQoiCcwanMroRR1LDTgseOKFBkZVomEVZwdxJ-kajUMDC4NN__Z7e
X-Forwarded-For: 107.178.203.22
X-SecurityProtocol-Version: TLSv1.2
X-SecurityProtocol-CipherSuite: ECDHE-RSA-AES256-GCM-SHA384

emailBlurb=TesttextTesttextTesttextTesttextTesttextamp;templateRoles=[Ljava.lang.Object;@17be0aa5amp;templateId=7078020e-49a0-42c6-b77d-368211d4a666amp;emailSubject=Please sign stuffamp;status=sent
415 UnsupportedMediaType
Content-Type: application/json; charset=utf-8

{
  "errorCode": "INVALID_CONTENT_TYPE",
  "message": "Content Type specified is not supported."
}
  

ОБНОВЛЕНИЕ: после установки типа содержимого я получил сообщение об ошибке, что тело было неправильно отформатировано. Смотрите ниже

 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=TesttextTesttextTesttextTesttextTesttextamp;templateRoles=[Ljava.lang.Object;@3449f174amp;templateId=7078020e-49a0-42c6-b77d-368211d4a666amp;emailSubject=Please sign stuffamp;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:

Ваш запрос, конечно, будет варьироваться в зависимости от нескольких факторов, таких как количество получателей и вкладок (полей), но на базовом уровне для отправки запроса подписи из шаблона вам нужно сделать http POST запрос к URI конвертов с информацией о шаблоне в теле запроса:

 POST https://demo.docusign.net/restApi/v2/accounts/{accountId}/envelopes

{
    "status": "sent",
    "emailSubject": "Request a signature via email example",
    "templateId": "44D9E888-3D86-4186-8EE9-7071BC87A0DA",
    "templateRoles": [
        {
            "email": "sally.doe@email.com",
            "name": "John Dough",
            "roleName": "RoleOne",
            "tabs": {
                "textTabs": [
                    {
                        "tabLabel": "ApplicantName",
                        "value": "John Dough"
                    },
                    {
                        "tabLabel": "ApplicantSSN",
                        "value": "12-345-6789"
                    }
                ]
            }
        }
    ]
}
  

Вы можете протестировать конверты: создайте API через DocuSign API Explorer.

Комментарии:

1. Спасибо Эргину. Я могу сделать это из моего скрипта приложения Google?

2. Привет @Ergin, я только что опубликовал обновление. Не могли бы вы взглянуть?

3. В сообщении об ошибке говорится, что он не может найти ваш ключ интегратора в запросе, я бы проверил и убедился, что ваш заголовок аутентификации прикреплен правильно, предполагая, что вы передаете действительный ключ. Я вижу, вы добавили header узел для добавления заголовка, обычно это должно быть множественное число headers . Попробуйте изменить это, и если это не сработает, вам следует включить регистрацию запросов в своей учетной записи и запустить трассировку, чтобы вы могли проверить входящий запрос.

4. Спасибо Эргин, header вместо headers было первым препятствием. К сожалению, теперь я получаю другую ошибку, в которой говорится, что есть проблема с типом содержимого. Смотрите обновление выше. Может ли это иметь какое-то отношение к формату полезной нагрузки?

5. Попробуйте добавить content-type заголовок и установите для него значение application/json . Если это не работает, как упоминалось ранее, отследите ваш запрос, затем отправьте необработанный запрос в вашем вопросе.

Ответ №2:

Вы можете использовать класс ItemResponse, чтобы получить ответ на один элемент вопроса в форме. Ответы на элементы могут быть доступны из FormResponse и созданы из любого элемента, который просит респондента ответить на вопрос.

Вот пример фрагмента кода:

 // Open a form by ID and log the responses to each question.
var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var formResponses = form.getResponses();
for (var i = 0; i < formResponses.length; i  ) {
  var formResponse = formResponses[i];
  var itemResponses = formResponse.getItemResponses();
   for (var j = 0; j < itemResponses.length; j  ) {
     var itemResponse = itemResponses[j];
     Logger.log('Response #%s to the question "%s" was "%s"',
         (i   1).toString(),
         itemResponse.getItem().getTitle(),
         itemResponse.getResponse());
   }
}
  

…но я не могу понять, как запустить Docusign api оттуда.

Вы можете проверить эту документацию, поскольку Google Apps Script может взаимодействовать с API-интерфейсами со всего Интернета. Если вы хотите использовать API Google или не-Google, который недоступен в качестве службы сценариев приложений, вы можете подключиться к общедоступному HTTP-интерфейсу API через службу выборки URL.

Этот сервис позволяет скриптам получать доступ к другим ресурсам в Интернете путем извлечения URL-адресов. Скрипт может использовать службу UrlFetch для отправки запросов HTTP и HTTPS и получения ответов. Служба UrlFetch использует сетевую инфраструктуру Google для повышения эффективности и масштабирования.

Надеюсь, это поможет!