CSVデータをインシデントのフィールドに自動でセットする方法
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-11-2022 02:01 AM
コミュニティの皆様
いつもお世話になっております。
私は、添付ファイルに特定のCSV(状態=差分)が登録されると、インシデントのレコードを起票し、
short_descriptionにCSVデータの項目をセットするという要件があります。
Business Ruleを作成し動作を確認したところ、ログにエラーが表示され、処理が失敗していました。
まだスクリプトやCSVについて知見が乏しく、
エラーの内容もよくわかりませんので、どこが問題かご教示頂きたいです。
Business Rule:
・Table:sys_attachment
・When:before
・Insert:true
・Script:
(function executeRule(current, previous /*null when async*/ ) {
var grAtt = new GlideRecord("sys_attachment");
grAtt.addQuery("file_name", "ENDSWITH", ".csv");
grAtt.query();
while(grAtt.next()){
getCsv(grAtt);
}
function getCsv(grAtt) {
//CSV読み取り
var gsAttachment = new GlideSysAttachment();
var csvLine;
var delimiter = ','; // 区切り文字
var quoteCharacter = '"'; // csv file の項目
var csvParser = new sn_impex.CSVParser();
var record = csvParser.parseLineToArray(csvLine, delimiter, quoteCharacter);
var rec = new GlideRecord("incident");
if (record[0] == "差分") {
rec.short_description = record[1];
rec.insert();
gs.log("【UAL確認】レコード作成成功");
}
gs.log("【UAL確認】レコード作成失敗");
}
})(current, previous);
ログに表示されたエラー内容:
JavaScript evaluation error on:
(function executeRule(current, previous /*null when async*/ ) {
var grAtt = new GlideRecord("sys_attachment");
grAtt.addQuery("file_name", "ENDSWITH", ".csv");
grAtt.query();
while(grAtt.next()){
getCsv(grAtt);
}
function getCsv(grAtt) {
//CSV読み取り
var gsAttachment = new GlideSysAttachment();
var csvLine;
var delimiter = ','; // 区切り文字
var quoteCharacter = '"'; // csv file の項目
var csvParser = new sn_impex.CSVParser();
var record = csvParser.parseLineToArray(csvLine, delimiter, quoteCharacter);
var rec = new GlideRecord("incident");
if (record[0] == "差分") {
rec.short_description = record[1];
rec.insert();
gs.log("【UAL確認】レコード作成成功");
}
gs.log("【UAL確認】レコード作成失敗");
}
})(current, previous);
Root cause of JavaScriptException: com.glide.csv.parser.CSVParserException
: com.glide.csv.parser.CSVParserException: CSVParser: Empty CSV record: com.glide.script.fencing.ScopedCSVParser.nilCSVRecordCheck(ScopedCSVParser.java:49)
com.glide.script.fencing.ScopedCSVParser.jsFunction_parseLineToArray(ScopedCSVParser.java:36)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:566)
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)
org.mozilla.javascript.FunctionObject.doInvoke(FunctionObject.java:670)
org.mozilla.javascript.FunctionObject.call(FunctionObject.java:614)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2609)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2678)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2617)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2678)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2617)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3459)
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:164)
com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:354)
com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:177)
com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:111)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:322)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:226)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:213)
com.glide.script.BusinessRule.runScript(BusinessRule.java:443)
com.glide.script.BusinessRule.runSyncBusinessRule(BusinessRule.java:325)
com.glide.script.BusinessRule.runBusinessRule(BusinessRule.java:218)
com.glide.script.BusinessRule.run(BusinessRule.java:194)
com.glide.script.GlideRecordBusinessRules.run(GlideRecordBusinessRules.java:255)
com.glide.script.GlideRecord.runScripts(GlideRecord.java:1422)
com.glide.script.GlideRecord.runScriptsAndEngines(GlideRecord.java:1356)
com.glide.script.GlideRecord.insert(GlideRecord.java:5032)
com.glide.script.GlideRecord.insert(GlideRecord.java:4962)
com.glide.ui.SysAttachmentOutputStream.close(SysAttachmentOutputStream.java:268)
com.glide.ui.SysAttachment.streamData(SysAttachment.java:1920)
com.glide.ui.SysAttachment.streamData(SysAttachment.java:1834)
com.glide.ui.SysAttachment.write(SysAttachment.java:1691)
com.glide.ui.SysAttachment.write(SysAttachment.java:1658)
com.glide.ui.SysAttachment.write(SysAttachment.java:1654)
com.glide.ui.SysAttachment.write(SysAttachment.java:1649)
com.glide.ui.SysAttachment.write(SysAttachment.java:1423)
com.glide.ui.SysAttachment.writeParts(SysAttachment.java:457)
com.glide.ui.SysAttachment.processRequest(SysAttachment.java:387)
com.glide.processors.AttachmentProcessor.process(AttachmentProcessor.java:93)
com.glide.processors.AProcessor.runProcessor(AProcessor.java:612)
com.glide.processors.AProcessor.processTransaction(AProcessor.java:274)
com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:184)
com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:172)
com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:46)
com.glide.sys.Transaction.run(Transaction.java:2468)
com.glide.ui.HTTPTransaction.run(HTTPTransaction.java:27)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base/java.lang.Thread.run(Thread.java:829)
com.glide.ui.ServletErrorListener
2022-10-11 17:40:02
Error com.glide.csv.parser.CSVParserException: CSVParser: Empty CSV record: org.mozilla.javascript.JavaScriptException: com.glide.csv.parser.CSVParserException: CSVParser: Empty CSV record: org.mozilla.javascript.Context.makeJavaScriptException(Context.java:1952)
org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1938)
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:143)
org.mozilla.javascript.FunctionObject.doInvoke(FunctionObject.java:670)
org.mozilla.javascript.FunctionObject.call(FunctionObject.java:614)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2609)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2678)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2617)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2678)
org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2617)
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1518)
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:830)
org.mozilla.javascript.InterpretedFunction.lambda$call$0(InterpretedFunction.java:152)
com.glide.caller.gen.sys_script_b10a7e142f6ed1109c8bd8ddf699b692_script.call(Unknown Source)
com.glide.script.ScriptCaller.call(ScriptCaller.java:18)
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:151)
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:563)
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3459)
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:164)
com.glide.script.ScriptEvaluator.execute(ScriptEvaluator.java:354)
com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:177)
com.glide.script.ScriptEvaluator.evaluateString(ScriptEvaluator.java:111)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:322)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:226)
com.glide.script.fencing.GlideScopedEvaluator.evaluateScript(GlideScopedEvaluator.java:213)
com.glide.script.BusinessRule.runScript(BusinessRule.java:443)
com.glide.script.BusinessRule.runSyncBusinessRule(BusinessRule.java:325)
com.glide.script.BusinessRule.runBusinessRule(BusinessRule.java:218)
com.glide.script.BusinessRule.run(BusinessRule.java:194)
com.glide.script.GlideRecordBusinessRules.run(GlideRecordBusinessRules.java:255)
com.glide.script.GlideRecord.runScripts(GlideRecord.java:1422)
com.glide.script.GlideRecord.runScriptsAndEngines(GlideRecord.java:1356)
com.glide.script.GlideRecord.insert(GlideRecord.java:5032)
com.glide.script.GlideRecord.insert(GlideRecord.java:4962)
com.glide.ui.SysAttachmentOutputStream.close(SysAttachmentOutputStream.java:268)
com.glide.ui.SysAttachment.streamData(SysAttachment.java:1920)
com.glide.ui.SysAttachment.streamData(SysAttachment.java:1834)
com.glide.ui.SysAttachment.write(SysAttachment.java:1691)
com.glide.ui.SysAttachment.write(SysAttachment.java:1658)
com.glide.ui.SysAttachment.write(SysAttachment.java:1654)
com.glide.ui.SysAttachment.write(SysAttachment.java:1649)
com.glide.ui.SysAttachment.write(SysAttachment.java:1423)
com.glide.ui.SysAttachment.writeParts(SysAttachment.java:457)
com.glide.ui.SysAttachment.processRequest(SysAttachment.java:387)
com.glide.processors.AttachmentProcessor.process(AttachmentProcessor.java:93)
com.glide.processors.AProcessor.runProcessor(AProcessor.java:612)
com.glide.processors.AProcessor.processTransaction(AProcessor.java:274)
com.glide.processors.ProcessorRegistry.process0(ProcessorRegistry.java:184)
com.glide.processors.ProcessorRegistry.process(ProcessorRegistry.java:172)
com.glide.ui.GlideServletTransaction.process(GlideServletTransaction.java:46)
com.glide.sys.Transaction.run(Transaction.java:2468)
com.glide.ui.HTTPTransaction.run(HTTPTransaction.java:27)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
java.base/java.lang.Thread.run(Thread.java:829)
CSV:

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-11-2022 02:19 AM
Hi,
Can you please share what data your have in CSV? (Any sample data will work)
Thanks
Anil Lande
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-11-2022 05:24 PM
Hello,
It seems your csvLine is passed in empty. You need to read a line from the file before parsing.
I think GlideTextReader.readLine would do the trick.
Then you would need to loop on the lines. The code snippet for readLine shows exactly that.