我正在创建一个带有Google应用脚本的应用,以便在我从他们那里收到谷歌表格时将Docusign信封发送给客户(响应将进入带有onFormSubmit触发器的google表格)。我使用Docusign REST API信封方法创建信封,并直接发送给客户。
客户提交表单后,我的Google应用脚本功能会自动创建一个pdf文档并将其放入google驱动器文件夹中。我使用Docusign Envelopes方法和#34; remoteUrl"参数(此处参考文档部分:https://docs.docusign.com/esign/restapi/Envelopes/Envelopes/create/)以指定Docusign将从中创建信封的google驱动器文档ID(pdf)。
显然,这些pdf文件都在我的google驱动器中,而且只是我的,所以我没有理由每天都登录我的Google帐户,这就是我的问题所在。有。当我尝试在不登录谷歌的情况下运行脚本时,Docusign API会抛出此错误消息:
"errorCode": "EXTERNAL_DOC_SERVICE_ERROR", "message": "An error occurred in the external doc service. NotAuthenticated"
有没有办法可以使用Google的API之一使用刷新令牌来保持登录状态?用外行人的术语来说,这是一种自动身份验证方法"。它必须以某种方式使用Docusign API与我的脚本进行通信。
以下是我当前的Google Apps脚本:
function Docusign() {
var ss = SpreadsheetApp.openById('MYSPREADSHEETID');
var sheet = ss.getSheetByName("SHEET");
var quotesheet = ss.getSheetByName("SHEET2");
var Avals = sheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;
var basicinfo = sheet.getRange(Alast, 1, 1, 35).getValues()[0];
var quotelinks = quotesheet.getRange(Alast, 1, 1, 10).getValues()[0];
var name = (basicinfo[2]);
var email = (basicinfo[1]);
//This is where the full links of the pdfs are stored
var doc = (quotelinks[0]);
//"DIGITS" is six digits followed by a colon, it might be private so I put "DIGITS" instead
var sub = "DIGITS" + doc.substring(32,65);
Logger.log(sub);
var url = "https://demo.docusign.net/restApi/v2/accounts/MYACCOUNTID/envelopes";
var payload =
{
"documents": [
{
"documentId": "1",
"fileExtension": "pdf",
"name": "NAMEOFDOC",
"remoteUrl": sub
}
],
"emailSubject": "SUBJECT",
"recipients": {
"signers": [
{
"email": email,
"name": name,
"recipientId": "1",
"tabs": {
"signHereTabs": [
{
"documentId": "1",
"pageNumber": "1",
"tabLabel": "Signature",
"xPosition": "140",
"yPosition": "650"
}
],
"dateTabs": [
{
"documentId": "1",
"pageNumber": "1",
"tabLabel": "date",
"xPosition": "420",
"yPosition": "680"
}
]
}
}
]
},
"status": "sent"
};
var options =
{
"contentType": "application/json",
"method" : "post",
"headers":
{
"X-DocuSign-Authentication": "{\"Username\":\"MYUSERNAME\",\"Password\":\"MYPASSWORD\",\"IntegratorKey\":\"MYINTEGRATORKEY\"}",
},
"payload" : JSON.stringify(payload)
};
UrlFetchApp.fetch(url, options);
}
非常感谢任何帮助。
答案 0 :(得分:0)
您可以尝试一件事,转到DocuSign webApp并对OA Drive执行OAUTH(通过在发送信封时添加来自G Drive的文档),这样您就可以授权DocuSign从Google云端硬盘获取文档代表你。
完成Google OAUTH后,您可以使用DocuSign API使用远程URL从Google云端硬盘获取文档。例如,在下面的通话中,“112805:0B1-EnSmMAIOmc3RhcnRlcl9maWx
”是Google云端硬盘中文档的ID。因此,使用DS API,我可以获取文档并将其添加到我的信封创建API调用中。
"documents": [
{
"remoteUrl":"112806:0B1-EnSmMAIOmc3RhcnRlcl9maWx",
"documentId": "1",
"name": "Getting started"
}
]