リクエストアイテムに添付したExcelファイルの入力値を取得する方法をまとめます。
使用するAPIはGlideExcelParserです。
本記事ではFlowDesignerでGlideExcelParserを使用するアクションを作成し、メインフローを作成していきます。
アクションを作成する
GlideExcelParserを使用するアクションを作成します。
Input
添付ファイルのsysIDを取得したいので、StringタイプのInputを用意します。
Script step
具体的な処理を記載していきます。
①変数にInputで取得した添付ファイルのsysIDをセットします。
➁Script欄にGlideExcelParserを使用する処理を記載します。
以下はサンプルスクリプトです。
(function execute(inputs, outputs) {
var parser = new sn_impex.GlideExcelParser();
var attachment = new GlideSysAttachment();
//添付ファイルのsysIDを指定
var attachmentStream = attachment.getContentStream(inputs.attachment);
//読み込むソースを指定
parser.setSource(attachmentStream);
//ヘッダー情報を取得
//配列で各列の情報が格納される
var headers = parser.getColumnHeaders();
var num= headers[0];
var companyName = headers[1];
gs.info('Header num:'+ num);
gs.info('Header companyName:'+ companyName);
//行単位で入力値を取得
while (parser.next()) {
var row = parser.getRow();
gs.info('Value row:' + row[num] + ' + ' + row[companyName]);
}
})(request, response);
サンプルフローを作成する
作成したアクションを使用して、
リクエストアイテムに添付したファイルを読み込むフローを作成します。
<解説>
TRIGGER)カタログアイテムからレコードが作成されると本フローが処理されます。
ACTION1)リクエストアイテムに添付されたファイルのsysIDを取得します。 ※OOTBアクション
ACTION2)ACTION1で取得した添付ファイルの入力値を取得します。 ※カスタムアクション
各アクションの設定内容
Action1 - Look Up Attachmnet
Source Recordにトリガーとなるレコード(リクエストアイテム)を指定します。
※このアクションのOutputは添付ファイルのsysIDです。
Action2 - カスタムアクション
Action1のOutput(取得した添付ファイルのsysID)をInputに指定します。
動作確認
テストしてみます。
カタログアイテムにこのエクセルを添付して送信すると、
下図のようなログが出力されました。
Excelの入力値を取得できていることがわかります。
終わりに
大量なデータをExcelのまま申請し、承認後に別システムへ自動登録してほしといった要望を実現するために本APIを使用しました。
とても便利な機能ですが、Excelのセルに付与されているフリガナも取得してしまう欠点もあります。
※フリガナは漢字を入力した際に自動で付与されます。
私たちはExcel保存時にフリガナを削除するマクロを実装することでフリガナごと連携されないよう対応しました。
GlideExcelParserを使用する際はお気をつけください。