- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-05-2022 06:52 PM
Hi,All
I would like to skip to exception handling in the following cases in JavaScript ”TryCatch” processing.
(1) When the attributes of the data are different.
(2) When you are trying to import data that exceeds the character limit of the field.
Is it possible to detect the above errors in JavaScript TryCatch processing and skip to exception processing? Or do I need to implement error handling for each of them?
I am new to JavaScript, so please let me know.
The script will be run on a scheduled job.
I've also included the actual code that I want to run for reference.
// インポートセットテーブルに添付されたCSVファイルを取得し、テーブルにインポートする
var csvList;
var grImp = new GlideRecord('u_import_table');
grImp.query();//全レコード取得する
while (grImp.next()) {//1行ずつレコード確認する
var grAtt = new GlideRecord('sys_attachment');
var flag_csv = false; //CSVファイル存在確認用フラグNo.8用
var flag_data_empty = false;
grAtt.query(); //「sys_attachment」テーブルのレコード全てを検索
//0105カウントアップ処理をして添付ファイルの数を管理する。2つ以上のファイルがあれば処理を停止してログを出力する。
while (grAtt.next()) {
//「sys_attachment」テーブルの「table_sys_id」と「u_import_table」テーブルのsys_idが同じ場合に処理
if (grAtt.table_sys_id == grImp.getUniqueValue()) {
//ここに1レコードに2ファイル以上添付ファイルがあればエラーを出力する処理追加
//「sys_attachment」テーブルのレコードの「file_name」に「".csv"」が含まれている場合に処理
//含まれていない場合には「tmp_str」に「-1」が設定される
var tmp_str = grAtt.file_name.indexOf(".csv");
//CSVファイルのみ処理する
if (tmp_str != -1) {
//CSVファイルの内容を元にレコードを作成する
csvList = getCsv(grAtt, grImp);
if(flag_data_empty == false){
gs.info('CSVファイルのインポートが正常終了しました。\n<対象レコード>\nSYS_ID=' + grAtt.table_sys_id);
}
flag_csv = true;//csvがある場合にフラグを立てるNo.8用
break;
} else { //追加ファイル形式がCSVでない場合はログ出力する。不要なら削除
gs.info('添付されているファイル形式がCSVファイルではありません。\n<対象レコード>\nSYS_ID=' +grAtt.table_sys_id);
}
}
}
if (flag_csv == false){//CSVファイルがなければエラー出力No.8
gs.info('レコードに添付されているCSVファイルがありません。\n<対象レコード>\nSYS_ID=' +grAtt.table_sys_id);
}
}
//CSVを読み取ってレコード作成
function getCsv(grAtt, grImp) {
try{
var gsAttachment = new GlideSysAttachment();
var delimiter = ','; // csv file delimiter
var quoteCharacter = '"'; // csv file quote character
//添付ファイルを取得する
var agr = gsAttachment.getAttachments('u_import_table', grImp.getUniqueValue());
if (agr.next()) { // check if there is any attachment
if (agr.getValue('file_name').endsWith('.csv')) { //ファイルの拡張子が「.csv」のみ対象とする
var attachmentStream = gsAttachment.getContentStream(agr.sys_id);
var reader = new GlideTextReader(attachmentStream); // using stream to overcome 5MB size limit. attachment should be in utf8
var isHeader = true;
var csv_count_row = 0;//追加
//CSVファイル1行目以降が空欄でなければレコード作成
while ((csvLine = reader.readLine()) != null) {//CSVを1行ずつ読み、次の行が存在するかを確認する。nullじゃなければ後続の処理続行。
if (isHeader == true) { //ヘッダーレコードは読み込み対象外とする。isHeaderがfalseならif内の処理を実行しない。
isHeader = false;
continue;
}
var record = new sn_impex.CSVParser().parseLineToArray(csvLine, delimiter, quoteCharacter); // CSVファイルのA列から順に配列に格納する
var rec = new GlideRecord('u_meisai'); // レコード作成対象テーブル
rec.intialize();
rec.u_scheme_id = record[0]; //CSVファイルA列:「スキームID」
rec.u_system_id = record[1]; //CSVファイルB列:「システムID」
rec.u_shubetsu_id = record[2]; //CSVファイルC列:「種別ID」
rec.u_datetime = record[3]; //CSVファイルD列:「DATETIME」
rec.u_value = record[4]; //CSVファイルE列:「VALUE」
rec.insert(); //レコード作成
csv_count_row = csv_count_row +1;//csvファイルのデータの行数を1行ずつ加算。
}
//添付ファイル削除
gsAttachment.deleteAttachment(agr.sys_id);
//CSVファイルのデータが0件でヘッダーレコードのみの場合の処理NO.9
if (csv_count_row == 0 ){
flag_data_empty = true;
gs.info('添付されているCSVファイルのデータが無い為処理を実行できませんでした。\n<対象レコード>\nSYS_ID=' +grAtt.table_sys_id);
}
}
}
}catch(e) {
gs.info(e.message);
}
}
Thank you very much for your help.
Solved! Go to Solution.
- Labels:
-
Script Debugger
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-05-2022 07:22 PM
Hello,
If they aren't true errors, but errors based on your own definition, you'd need to evaluate for that and then "throw" to go to error handling.
https://www.w3schools.com/js/js_errors.asp
Please mark reply as Helpful/Correct, if applicable. Thanks!
Please consider marking my reply as Helpful and/or Accept Solution, if applicable. Thanks!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-05-2022 07:22 PM
Hello,
If they aren't true errors, but errors based on your own definition, you'd need to evaluate for that and then "throw" to go to error handling.
https://www.w3schools.com/js/js_errors.asp
Please mark reply as Helpful/Correct, if applicable. Thanks!
Please consider marking my reply as Helpful and/or Accept Solution, if applicable. Thanks!