GMO Sign: Regist Envelope Document
This item registers a file (document) for a sign request to GMO Sign.
Configs for this Auto Step
- conf_OAuth2
- C1: Secret Key *
- cusId
- C2: Customer id *#{EL}
- accessUrl
- C3: Access url *#{EL}
- registFile
- C4: File(Document) will be registed *
- documentCode
- C5: Document code *
Script (click to open)
//ファイルサイズ制限50MB
//https://helpcenter.gmosign.com/hc/ja/articles/900005461666
const SIZE_LIMIT = 52428800; //File size border of Box
/*
JSON例
・アクセストークン生成 AccessToken_Generate_Post
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX"
}
・封筒用文書登録 Envelope_Document_Regist_Post
※アップできるのはPDFのみ
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX",
"access_token": "(取得したトークン)",
"document": "(Base64変換したファイル)"
}
*/
main();
function main() {
//// == 工程コンフィグの参照 / Config Retrieving ==
//シークレットキーはHTTP認証設定のトークン直接指定に入れてもらう
const key = configs.getObject("conf_OAuth2").getToken() + "";
const cusId = configs.get("cusId") + "";
const accessUrl = configs.get("accessUrl") + "";
const dataId_documentCode = configs.get("documentCode");
//// == ワークフローデータの参照 / Data Retrieving ==
const files = engine.findData(configs.getObject("registFile"));
//// == 演算 / Calculating ==
//アクセストークン取得
let accessToken = getAccessToken(key, cusId, accessUrl);
//文書ファイル登録
let documentCode = registFile(key, cusId, accessUrl, accessToken, files);
//// == ワークフローデータへの代入 / Data Updating ==
engine.setDataByNumber( dataId_documentCode, documentCode );
/* アクセスログがあれば
if ( dataId_log !== "" ) {
engine.setDataByNumber( dataId_log, accessLog );
}
*/
}
/**
* アクセストークン取得
* @param {String} key シークレットキー
* @param {String} cusId 顧客ID
* @param {String} accessUrl 接続先URL
* @returns {String} アクセストークン
*/
function getAccessToken(key, cusId, accessUrl) {
//JSON準備
let requestObj = {};
requestObj.secret_key = key;
requestObj.cus_id = cusId;
//HTTPリクエスト送付
const url = "https://" + accessUrl + "/agree-api/v0/api/accesstoken/generate";
const response = httpClient.begin()
.body( JSON.stringify(requestObj), "application/json" )
.post(url);
const status = response.getStatusCode();
const responseStr = response.getResponseAsString();
if (status !== 200) {
engine.log(responseStr);
throw `Failed to get access token. status: ${status}`;
}
engine.log("responseStr:" + responseStr);//検証用
const json = JSON.parse(responseStr);
if ( json['status'] !== "0") {
throw `Failed to get acess token. status: ${json['status']}. message: ${json['message']}`;
}
return json['result']['access_token'];
}
/**
* 文書ファイル登録
* @param {String} key シークレットキー
* @param {String} cusId 顧客ID
* @param {String} accessUrl 接続先URL
* @param {String} accessToken アクセストークン
* @param {object} files ファイル
* @returns {String} ドキュメントコード
*/
function registFile(key, cusId, accessUrl, accessToken, files) {
//JSON準備
let requestObj = {};
requestObj.secret_key = key;
requestObj.cus_id = cusId;
requestObj.access_token = accessToken;
//1ファイルのみかチェック
if (( !files ) || ( files.length != 1 )) {
throw `PDF File Num invalid.`;
}
const file = files.get(0);
//ファイルサイズチェック
if ( file.getLength() > SIZE_LIMIT ) {
throw `PDF File size over.`;
}
//ファイルBase64変換
let base64Text = "";
fileRepository.readFile(file, SIZE_LIMIT, function(bytes) {
base64Text += base64.encodeToString(bytes);
});
engine.log("requestObj:" + JSON.stringify(requestObj));//検証用、ファイルデータをいれる前をログ出力(ファイルデータが入ると長くなりすぎるので)
requestObj.document = base64Text;
//HTTPリクエスト送付
const url = "https://" + accessUrl + "/agree-api/v0/api/envelope/document/regist";
const response = httpClient.begin()
.body( JSON.stringify(requestObj), "application/json" )
.post(url);
const status = response.getStatusCode();
const responseStr = response.getResponseAsString();
if (status !== 200) {
engine.log(responseStr);
throw `Failed to regist file. status: ${status}`;
}
engine.log("responseStr:" + responseStr);//検証用
const json = JSON.parse(responseStr);
if ( json['status'] !== "0") {
throw `Failed to regist file. status: ${json['status']}. message: ${json['message']}`;
}
return json['result']['document_code'];
}
Download
- gmo-sign-envelope-document-regist.xml
- 2024-06-24 (C) Questetra, Inc. (MIT License)
Freely modifiable JavaScript (ECMAScript) code. No warranty of any kind.
(Installing Addon Auto-Steps are available only on the Professional edition.)
(Installing Addon Auto-Steps are available only on the Professional edition.)
Notes
- GMO Sign is a service provided by GMO GlobalSign Holdings, Inc.
- To use GMO Sign for electronic signatures, you need to use a combination of [GMO Sign: Register Envelope Document], [GMO Sign: Send Sign Request] and [GMO Sign: Retrieve Envelope Status].
- For “Secret Key”, “Customer ID”, and “Access URL”, please specify the values provided by GMO GlobalSign Holdings, Inc. For “Secret Key”, please specify “Token Fixed Value” in the HTTP Authorization Settings.
Capture

