GMO サイン: 封筒署名ステータス確認
GMO Sign: Retrieve Envelope Status
この工程は GMO サイン から署名依頼した封筒のステータス・文書の管理番号を取得します。
Configs for this Auto Step
- conf_OAuth2
- C1: シークレットキー *
- cusId
- C2: 顧客ID *#{EL}
- accessUrl
- C3: アクセス先URL(例 api.gmosign.com) *#{EL}
- envelopeXid
- C4: 封筒トランザクションID が保存されている文字型データ項目 *
- envelopeStatus
- C5: 封筒ステータス を保存する選択型データ項目 *
- controlNumber
- C6: 文書の管理番号を保存する文字型データ項目
Script (click to open)
/*
JSON例
・アクセストークン生成 AccessToken_Generate_Post
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX"
}
・封筒用文書登録 Envelope_Status_Post
※アップできるのはPDFのみ
{
"secret_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"cus_id": "XXXXXXXXXX",
"access_token": "(取得したトークン)",
"envelope_xid": "(取得したID)"
}
・封筒status一覧
1,ワークフロー承認待ち
2,署名待ち
3,署名完了
4,最終署名完了
5,削除済み
6,署名者が辞退
7,ワークフロー承認却下
*/
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_envelopeStatus = configs.get("envelopeStatus");
const dataId_controlNumber = configs.get("controlNumber");
//// == ワークフローデータの参照 / Data Retrieving ==
const envelopeXid = engine.findData(configs.getObject("envelopeXid")) + "";
//// == 演算 / Calculating ==
//アクセストークン取得
let accessToken = getAccessToken(key, cusId, accessUrl);
//封筒状態取得
let json = retrieveRequestStatus(key, cusId, accessUrl, accessToken, envelopeXid);
//// == ワークフローデータへの代入 / Data Updating ==
let selects = new java.util.ArrayList();
let envelopeStatus = json['result']['envelope_status']
selects.add(envelopeStatus + "");
engine.setDataByNumber( dataId_envelopeStatus, selects );
if ( dataId_controlNumber !== "" ) {
//1つめの文書ファイルの管理番号のみ取得
engine.setDataByNumber( dataId_controlNumber, json['result']['document_list'][0]['control_number'] );
}
/* アクセスログがあれば
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} envelopeXid 封筒トランザクションID
* @returns {String} レスポンスJSON
*/
function retrieveRequestStatus(key, cusId, accessUrl, accessToken, envelopeXid) {
//JSON準備
let requestObj = {};
requestObj.secret_key = key;
requestObj.cus_id = cusId;
requestObj.access_token = accessToken;
requestObj.envelope_xid = envelopeXid;
engine.log("requestObj:" + JSON.stringify(requestObj));//検証用
//HTTPリクエスト送付
const url = "https://" + accessUrl + "/agree-api/v0/api/envelope/status";
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 retrieve. status: ${status}`;
}
engine.log("responseStr:" + responseStr);//検証用
const json = JSON.parse(responseStr);
if ( json['status'] !== "0") {
throw `Failed to retrieve status. status: ${json['status']}. message: ${json['message']}`;
}
return json;
}
Download
- gmo-sign-envelope-retrieve-status.xml
- 2024-07-02 (C) Questetra, Inc. (MIT License)
自由改変可能な JavaScript (ECMAScript) コードです。いかなる保証もありません。
(アドオン自動工程のインストールは Professional editionでのみ可能です)
(アドオン自動工程のインストールは Professional editionでのみ可能です)
Notes
- 「GMO サイン」はGMOグローバルサイン・ホールディングス株式会社のサービスです。
- GMO サインで電子署名させる場合には、「GMO Sign: 封筒用文書登録」・「GMO Sign: 封筒署名依頼」・「GMO Sign: 封筒署名ステータス確認」を組み合わせて使う必要があります。また「GMO サイン: 文書ファイルURL取得」を使うと署名済ファイル取得ができます。
- 「シークレットキー」・「顧客ID」・「アクセス先URL」はGMOグローバルサイン・ホールディングス株式会社より指定された値を指定してください。「シークレットキー」は「HTTP認証設定」の「トークン直接指定」で指定してください。
- 「封筒ステータス」は以下の設定で選択型データを準備して、指定してください。
| 選択肢ID | 表示ラベル |
| 1 | ワークフロー承認待ち |
| 2 | 署名待ち |
| 3 | 署名完了 |
| 4 | 最終署名完了 |
| 5 | 削除済 |
| 6 | 署名者が辞退 |
| 7 | ワークフロー承認却下 |
Capture

