【ServiceNow】CSVファイルを作成してチケットに添付する方法

【ServiceNow】CSVファイルを作成してチケットに添付する方法

with コメントはまだありません
皆さん、こんにちは。ServiceNow担当のアキです。

皆さんはServiceNowの導入をしていて、「ファイルの自動作成ってどうやるのだろう?」と考えたことはないでしょうか?

ServiceNowテーブルの各レコードへファイル添付をしたり、メール送信時にファイルを添付するなど、運用で(=手作業で)行う機会は多々あると思いますが、自動でファイルを作成して添付することも可能です。

このような添付ファイルを簡単に作成する標準APIが用意されていますので、今回は添付ファイルの作成についてご紹介します。

GlideSysAttachment APIのご紹介

今回使用するAPIは「GlideSysAttachment」です。

代表的なメソッドとしては、下記の機能が用意されています。(※Docsより一部抜粋)

今回は添付ファイルの作成がテーマですので、「write」メソッドを使う事例を紹介します。

ユースケース

例えば、月に1回、未解決のインシデントを抽出して、CSVファイルを作成し、新規に起票したタスクに添付するケースを考えてみます。

<イメージ>

<処理手順>
この場合の処理手順としては下記のイメージとなります。
①月初のタイミングでアクティブなインシデント[incident]レコードを抽出
②タスク[task]の新規レコードを作成
③新規レコードへCSVファイルを添付

 

実装サンプル

上記の処理手順に沿って、実装サンプルをご紹介します。
以下のスクリプトは全てサーバサイドスクリプトで実行することができます。
自動で実行する場合は、スケジュールジョブで下記スクリプトを記載し実行します。

①アクティブなインシデント[incident]レコードを抽出

//インシデントテーブルを検索対象とする
var gr = new GlideRecord("incident");

//現在有効なインシデントを抽出対象とする
gr.addActiveQuery();

//検索の実施
gr.query();

//CSVファイルに格納する内容を保存する変数を宣言
var content = '';

//上記のクエリーで抽出できた件数分、処理を繰り返す
while(gr.next()) {

//抽出したインシデントレコードより、CSVファイルの中身を組み立てる
content = content + '"' + gr.number + '",'
+ '"' + gr.caller_id.getDisplayValue() + '",'
+ '"' + gr.short_description+'",'
+ '"' + gr.assignment_group.getDisplayValue() + '",'
+ '"' + gr.assigned_to.getDisplayValue() + '"'
+ "\r\n";
}
  • 上記のコードで、現在有効なインシデントレコードが抽出できます。
    上記の例では、CSVファイルへ出力する内容を組み立て、contentという変数へ格納しています。
  • CSVファイルなので、各項目値は前後をダブルコーテーション["]で囲い、項目間はカンマ[,]で区切っています。
 

②タスク[task]の新規レコードを作成

//タスクテーブルが作成対象
var task_rec = new GlideRecord('task');

//新規のレコードを準備
task_rec.initialize();

//簡単な説明を設定
task_rec.short_description = '未解決のインシデントを抽出';

//アサイン先グループを設定
task_rec.assignment_group = '51b6b23d9337311043e8bd4f7bba10fb';

//上記の内容でレコードを作成
task_rec.insert();
  • 上記のコードで、添付ファイルを貼り付けるタスクレコードを準備しています。
    最低限の項目として、タスク名とアサイン先グループを設定しています。
 

③新規レコードへCSVファイルを添付

//ファイル名を設定
var fileName = 'open_incident.csv';

//コンテンツタイプをCSVに設定
var contentType = 'text/csv';

//CSVファイルを作成し、タスクレコードに添付
var attachment = new GlideSysAttachment();
var agr = attachment.write(task_rec, fileName, contentType, content);
  • 手順①で組み立てた変数「content」を利用して、CSVファイルを作成します。
    手順②でタスクレコードを作成した際に、変数「task_rec」にタスクレコードが格納されていますので添付先として指定します。
  • 変数「contentType」でコンテンツタイプを指定します。
    ServiceNowでサポートされている添付ファイルのコンテンツタイプが利用できます。
 

<補足>
コンテンツタイプは、作成するファイルの種類に応じて様々です。
下記に一例を紹介します。

実行結果

上記の処理をスケジュールジョブで実装し、インシデントテーブルのデモデータを利用して、添付ファイルの作成を実施してみました。

タスクが作成されたことが確認できます。

 

タスクレコードを開くと、作成した添付ファイルが保存されていることが、確認できます。

 

添付ファイルを任意のフォルダへダウンロードし、ファイルを開くとCSVファイルの中身が想定通りに作成されていることが確認できます。

まとめ

今回は、標準で用意されているAPIを利用して、ファイルの作成とレコードへの添付を実現する方法をご紹介しました。

添付ファイルを作成することで、担当者へメール送信したり、外部から接続してダウンロードしてもらう等、様々な運用(業務要件)にお応えすることができます。

ServiceNowの高度な実装には、弊社のServiceNow導入サービスをよろしくお願いいたします。

ServiceNowについて更に詳しく知りたい方は、ServiceNowに熟知したSTSメンバーがよりよいシステム構築をご提案しますので、ぜひご相談ください。

関連記事

本記事はいかがでしたか?

Follow アキ:

株式会社システムサポート デジタルイノベーション事業部のアキです。 Servicenow業務に従事しています。