---
sourceDocument: 호주 API 참조
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ko-KR/api-reference

 Release :

    - australia

ft:locale :

    - ko-KR

ft:publication_title :

    - 호주 API 참조

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# GlideExcelParser - 범위, 전역

# GlideExcelParser - 범위, 전역 {#ariaid-title1}

* 릴리스 버전: Australia
* 
* 업데이트 날짜 2026년 03월 12일
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 소요 시간: 46분

GlideExcelParser API는 서식.xlsx 지정된 Excel 파일을 구문 분석하고 스크립트의 파일 데이터에 액세스합니다.

전역 및 범위가 지정된 스크립트에서 GlideExcelParser 메서드를 사용할 수 있습니다. `sn_impex` 네임스페이스 식별자를 사용하여 GlideExcelParser 객체를 생성합니다.

## GlideExcelParser - GlideExcelParser() {#ariaid-title2}

GlideExcelParser의 인스턴스를 만듭니다.
API 네임스페이스 식별자 "sn_impex"는 GlideExcelParser 객체를 생성할 때 사용해야 합니다.
{#GEPS-GlideExcelParser__table_fwc_dyb_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 1. 매개변수]

{#GEPS-GlideExcelParser__table_fwc_dyb_4z}  

    var parser = new sn_impex.GlideExcelParser(); 
    var attachment = new GlideSysAttachment();
    // use attachment sys id of an excel file
    var attachmentStream = attachment.getContentStream(<attachment sys id>);

    parser.parse(attachmentStream); 

    //retrieve the column headers
    var headers = parser.getColumnHeaders();  
    var header1 = headers[0]; 
    var header2 = headers[1]; 

    //print headers
    gs.info(header1 + " " + header2); 

    while(parser.next()) { 
      var row = parser.getRow(); 
      //print row value for both columns   
      gs.info(row[header1] + ' ' + row[header2]) 
    }

## GlideExcelParser - close() {#ariaid-title3}

입력 스트림에 대한 연결을 닫고 문서를 릴리스합니다.
{#GEPS-close__table_ibr_rrh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 2. 매개변수]

{#GEPS-close__table_ibr_rrh_4z} {#GEPS-close__table_jbr_rrh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 무효 |   |
[표 3. 반환]

{#GEPS-close__table_jbr_rrh_4z}  
이 예에서는 모든 문서 관리가 완료되면 파서를 닫는 방법을 보여줍니다.

    // iterate over each row in the excel sheet
    var attachment = new GlideSysAttachment();
    var attachmentStream = attachment.getContentStream(<attachment sys id>);
    var parser = new sn_impex.GlideExcelParser();
    parser.parse(attachmentStream);
    while (parser.next()) {
      // do something on each row
      var row = parser.getRow();
      gs.info(JSON.stringify(row));
    }
    parser.close(); // close the stream and release the document

## GlideExcelParser - getColumnHeaders() {#ariaid-title4}

구문 분석된 문서의 열 헤더 목록을 반환합니다.
{#GEPS-getColumnHeaders__table_mkv_d3h_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 4. 매개변수]

{#GEPS-getColumnHeaders__table_mkv_d3h_4z} {#GEPS-getColumnHeaders__table_nkv_d3h_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 배열 | 구문 분석된 문서의 열 헤더 문자열 배열입니다. |
[표 5. 반환]

{#GEPS-getColumnHeaders__table_nkv_d3h_4z}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - getErrorMessage() {#ariaid-title5}

parse() 메서드가 실패하면 오류 메시지를 반환합니다.
{#GEPS-getErrorMessage__table_rsc_2rh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 6. 매개변수]

{#GEPS-getErrorMessage__table_rsc_2rh_4z} {#GEPS-getErrorMessage__table_ssc_2rh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 문자열 | 오류 메시지입니다. |
[표 7. 반환]

{#GEPS-getErrorMessage__table_ssc_2rh_4z}

## GlideExcelParser - getRow() {#ariaid-title6}

현재 행 값과 헤더를 가져옵니다.
{#GEPS-getRow__table_g4y_pqh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 8. 매개변수]

{#GEPS-getRow__table_g4y_pqh_4z} {#GEPS-getRow__table_h4y_pqh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 객체 | 행 헤더는 속성 이름이고 행 값은 속성 값입니다. |
[표 9. 반환]

{#GEPS-getRow__table_h4y_pqh_4z}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - getSheetNames() {#ariaid-title7}

Excel 통합 문서의 모든 워크시트 이름 목록을 가져옵니다.
{#GEPS-getSheetNames__table_cjs_w4p_pnb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 10. 매개변수]

{#GEPS-getSheetNames__table_cjs_w4p_pnb} {#GEPS-getSheetNames__table_djs_w4p_pnb__entry__2}

| 유형 | 설명 |
|-|-|
| 배열 | 통합 문서에서 왼쪽에서 오른쪽으로 정렬된 워크시트 이름으로서의 문자열 배열입니다. 결과에는 숨김으로 표시된 워크시트가 포함됩니다. |
[표 11. 반환]

{#GEPS-getSheetNames__table_djs_w4p_pnb}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - getTableInfo() {#ariaid-title8}

스프레드시트 또는 CSV 첨부 파일에서 테이블 열 유형과 최대 문자 길이를 가져옵니다.
주:  
이 방법은 범위가 지정된 애플리케이션으로 제한됩니다.
{#GEPS-getTableInfo__table_gnh_csz_4hb__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 12. 매개변수]

{#GEPS-getTableInfo__table_gnh_csz_4hb} {#GEPS-getTableInfo__table_hnh_csz_4hb__entry__2}

| 유형 | 설명 |
|-|-|
| 객체 | 첨부 파일 데이터를 키가 열 이름인 맵으로 반환합니다. 값에는 열 유형과 열에 있는 문자 문자열의 최대 길이가 포함됩니다. getType() 및 getLength() 메서드를 사용하여 반환 값에 액세스합니다. |
[표 13. 반환]

{#GEPS-getTableInfo__table_hnh_csz_4hb}  
이 예에서는 1, Meghan, 1/1/85, 1:00 AM, 10.00%, 224-432-8582, 1/2와 같은 행 데이터를 포함하여 7열 스프레드시트 첨부 파일에서 데이터를 처리하는 방법을 보여줍니다.

    var attachmentSysId = "<sys_id>";
    var headerRowNumber = 6;

    var attachmentStream = new GlideSysAttachment().getContentStream(attachmentSysId);
    var parser = new sn_impex.GlideExcelParser();
    parser.setHeaderRowNumber(headerRowNumber);
    if (!parser.parse(attachmentStream)) {
        throw "Attachment could not be parsed as an Excel Spreadsheet " + attachmentSysId;
    }
    var tableInfo = parser.getTableInfo();
    for (var name in tableInfo) {
    gs.info('Column Name : ' + name + ', Type : ' + tableInfo[name].getType() + ', Max Length : ' + tableInfo[name].getLength());
    }

출력:

    ProgressWorker: Attempted to get non-existent sys_progress_
    worker record, inserted 81b0ca5ddb59730090c9ff9dbf9619c4
    sn_appcreator: Column Name : My Number Col, Type : integer,
     Max Length : 1
    sn_appcreator: Column Name : My String Col, Type : string, 
     Max Length : 650
    sn_appcreator: Column Name : My Date Col, Type : glide_date,
     Max Length : 6
    sn_appcreator: Column Name : My DateTime Col, Type : 
     glide_date_time, Max Length : 7
    sn_appcreator: Column Name : My Percent Col, Type : decimal,
     Max Length : 6
    sn_appcreator: Column Name : My Phone Col, Type : string, 
     Max Length : 12
    sn_appcreator: Column Name : My Fraction Col, Type : decimal,
     Max Length : 3

## GlideExcelParser - 다음() {#ariaid-title9}

다음 행으로 이동합니다.
{#GEPS-next__table_dd1_2qh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 안 함 |   |   |
[표 14. 매개변수]

{#GEPS-next__table_dd1_2qh_4z} {#GEPS-next__table_ed1_2qh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 부울 | 다음 행이 있으면 예를 반환하고, 그렇지 않으면 아니오를 반환합니다. |
[표 15. 반환]

{#GEPS-next__table_ed1_2qh_4z}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - 구문 분석(InputStream inputStream) {#ariaid-title10}

XLSX 형식의 Excel 문서를 구문 분석합니다.
{#GEPS-parse_GSIS__table_u2j_lch_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 입력스트림 | [GlideScriptableInputStream](https://servicenow-prod.fluidtopics.net/SN7kbqzJz8twJklEnB51FQ "GlideScriptableInputStream 객체는 직접 인스턴스화할 수 없지만 GlideSysAttachment.getContentStream() 의 입력 스트림을 다른 스트리밍 API와 연결하는 데 사용되는 불투명 객체로 사용됩니다.") | 입력 스트림으로 제공된 Excel 문서입니다. 주: [setSource()](https://servicenow-prod.fluidtopics.net/fqS3Cb7P5y67AmPFxsM2Xw#GEPS-setSource_O "Excel 파일의 각 워크시트를 여러 번 구문 분석하거나 구문 분석하기 위한 입력 소스를 정의합니다.") 메서드를 사용하여 동일한 소스를 여러 번 구문 분석하는 경우에는 이 값을 설정하지 마십시오. |
[표 16. 매개변수]

{#GEPS-parse_GSIS__table_u2j_lch_4z} {#GEPS-parse_GSIS__table_v2j_lch_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 부울 | 구문 분석이 성공했는지 여부를 나타내는 플래그입니다. 유효한 값은 다음과 같습니다. * 예: 문서 구문 분석이 완료되었습니다. * false: 문서가 성공적으로 구문 분석되지 않았습니다. {#GEPS-parse_GSIS__ul_mkg_l5t_vnb} |
[표 17. 반환]

{#GEPS-parse_GSIS__table_v2j_lch_4z}  
요청 페이로드의 입력 스트림을 사용하여 Excel 파일이 전송되는 스크립팅된 REST API 스크립트의 예입니다.

    var parser = new sn_impex.GlideExcelParser();
    parser.parse(request.body.dataStream); 

다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - setHeaderRowNumber(Number headerRowNumber) {#ariaid-title11}

검색할 헤더 행의 번호를 설정합니다.
{#GEPS-setHeaderRowNumber_N__table_h1d_kfh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| headerRowNumber | 번호 | 검색할 헤더 행입니다. |
[표 18. 매개변수]

{#GEPS-setHeaderRowNumber_N__table_h1d_kfh_4z} {#GEPS-setHeaderRowNumber_N__table_i1d_kfh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 무효 |   |
[표 19. 반환]

{#GEPS-setHeaderRowNumber_N__table_i1d_kfh_4z}

## GlideExcelParser - setNullToEmpty(부울 비어 있음) {#ariaid-title12}

Excel 셀이 없으면 null 대신 빈 값을 반환합니다.
{#GEPS-setNullToEmpty_B__table_lrz_wgh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 비어 있음 | 부울 | 예일 때는 존재하지 않는 셀이 빈 값을 반환합니다. 아니오일 경우 존재하지 않는 셀은 null을 반환합니다. |
[표 20. 매개변수]

{#GEPS-setNullToEmpty_B__table_lrz_wgh_4z} {#GEPS-setNullToEmpty_B__table_mrz_wgh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 무효 |   |
[표 21. 반환]

{#GEPS-setNullToEmpty_B__table_mrz_wgh_4z}

## GlideExcelParser - setSheetName(문자열 sheetName) {#ariaid-title13}

검색할 시트의 이름을 설정합니다.
setSheetNumber()와 setSheetName()이 모두 설정된 경우 setSheetName()이 사용됩니다.
{#GEPS-setSheetName_S__table_tm3_p2h_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 시트 이름 | 문자열 | 검색할 시트의 이름입니다. |
[표 22. 매개변수]

{#GEPS-setSheetName_S__table_tm3_p2h_4z} {#GEPS-setSheetName_S__table_um3_p2h_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 무효 |   |
[표 23. 반환]

{#GEPS-setSheetName_S__table_um3_p2h_4z}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin

## GlideExcelParser - setSheetNumber(Number sheetNumber) {#ariaid-title14}

검색할 Excel 시트의 번호를 설정합니다.
setSheetNumber() 및 setSheetName()이 모두 설정된 경우 setSheetNumber()는 무시됩니다.
{#GEPS-setSheetNumber_N__table_ztb_tdh_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 시트번호 | 번호 | 검색할 Excel 시트 번호입니다. |
[표 24. 매개변수]

{#GEPS-setSheetNumber_N__table_ztb_tdh_4z} {#GEPS-setSheetNumber_N__table_a5b_tdh_4z__entry__2}

| 유형 | 설명 |
|-|-|
| 무효 |   |
[표 25. 반환]

{#GEPS-setSheetNumber_N__table_a5b_tdh_4z}  
다음 예제에서는 이 메서드를 사용하여 읽을 첨부된 스프레드시트 통합 문서의 시트 번호를 지정하는 방법을 보여줍니다.

    var parser = new sn_impex.GlideExcelParser(); 
    var attachment = new GlideSysAttachment();

    // Use the sys id of an Excel file in the sys_attachment table and copy the sys_id of attachment.
    var attachmentStream = attachment.getContentStream('178e0511138b6300026e32228144b04e');

    // Specify the sheet Number to be read, 0 denotes sheet 1, 1 denotes sheet 2, etc.
    parser.setSheetNumber("0");   

    parser.parse(attachmentStream);

    // retrieve the column headers (tests if on the correct sheet)
    var headers = parser.getColumnHeaders();
    var header1 = headers[0];
    var header2 = headers[1];
    var header3 = headers[2];

    // print headers
    gs.info('Header 1 value = ' +header1);
    gs.info('Header 2 value = ' +header2);
    gs.info('Header 3 value = ' +header3);

출력:

    Header 1 value = sys_id
    Header 2 value = email
    Header 3 value = undefined

## GlideExcelParser - setSource(InputStream inputStream) {#ariaid-title15}

Excel 파일의 각 워크시트를 여러 번 구문 분석하거나 구문 분석하기 위한 입력 소스를 정의합니다.
{#GEPS-setSource_O__table_u2j_lch_4z__entry__3}

| 이름 | 유형 | 설명 |
|-|-|-|
| 입력스트림 | [GlideScriptableInputStream](https://servicenow-prod.fluidtopics.net/SN7kbqzJz8twJklEnB51FQ "GlideScriptableInputStream 객체는 직접 인스턴스화할 수 없지만 GlideSysAttachment.getContentStream() 의 입력 스트림을 다른 스트리밍 API와 연결하는 데 사용되는 불투명 객체로 사용됩니다.") | 입력 스트림으로 제공되는 Excel 문서입니다. |
[표 26. 매개변수]

{#GEPS-setSource_O__table_u2j_lch_4z} {#GEPS-setSource_O__table_otr_z4p_pnb__entry__2}

| 유형 | 설명 |
|-|-|
| 안 함 |   |
[표 27. 반환]

{#GEPS-setSource_O__table_otr_z4p_pnb}  
다음 예제에서는 Excel 파일 첨부 파일을 여러 번 구문 분석하여 열 헤더를 검색하고 각 워크시트에 대한 각 행의 값을 인쇄하는 방법을 보여 줍니다. 결과에는 Excel 첨부 파일에 있는 세 개의 개별 시트의 열 헤더와 값이 표시됩니다.

    var parser = new sn_impex.GlideExcelParser();

    var attachment = new GlideSysAttachment();

    // Use the attachment sys_id of an Excel file
    var attachmentStream = attachment.getContentStream("<attachment_sys_id>");

    // Set the source to be parsed
    parser.setSource(attachmentStream);

    // Get the worksheet names to be parsed in the Excel document
    var list_sheet_name = parser.getSheetNames();

    gs.info(" Sheet Names " + list_sheet_name.join(", "));

    // Iterate over each worksheet in the Excel workbook
    for (var i = 0; i < list_sheet_name.length; i++) {
        gs.info("**************************************************************************************");
        gs.info("Sheet name:    " + list_sheet_name[i]);

    // Set the worksheet name to be parsed
        parser.setSheetName(list_sheet_name[i]);

    // Parse each worksheet set using setSheetName()
        if (parser.parse()) {
            //retrieve the column headers
            var headers = parser.getColumnHeaders();
            var header1 = headers[0];
            var header2 = headers[1];
            var header3 = headers[2];

            //print headers
            gs.info(header1 + "\t||" + header2 + "\t||" + header3);

            // Iterate over each row in the worksheet
            while (parser.next()) {
                var row = parser.getRow();
                //print row value for both columns   
                gs.info(row[header1] + '\t|| ' + row[header2] + '\t||' + row[header3])
            }
        } else
            gs.info(parser.getErrorMessage());
    }

출력:

    *** Script:  Sheet Names Incident Table, sys_user Table, knowledge Table
    *** Script: **************************************************************************************
    *** Script: Sheet name:    Incident Table
    *** Script: Number	||Opened	||Short description
    *** Script: INC0010112	|| 2019-07-29 11:48:43	||Assessment :  ATF Assessor
    *** Script: INC0010111	|| 2019-07-22 14:04:57	||ATF : Test1
    *** Script: INC0009009	|| 2018-08-30 01:06:16	||Unable to access the shared folder.
    *** Script: **************************************************************************************
    *** Script: Sheet name:    sys_user Table
    *** Script: User ID	||Name	||Email
    *** Script: abel.tuter	|| Abel Tuter	||abel.tuter@example.com
    *** Script: abraham.lincoln	|| Abraham Lincoln	||abraham.lincoln@example.com
    *** Script: adela.cervantsz	|| Adela Cervantsz	||adela.cervantsz@example.com
    *** Script: aileen.mottern	|| Aileen Mottern	||aileen.mottern@example.com
    *** Script: alejandra.prenatt	|| Alejandra Prenatt	||alejandra.prenatt@example.com
    *** Script: **************************************************************************************
    *** Script: Sheet name:    knowledge Table
    *** Script: Number	||Short description	||Author
    *** Script: KB99999999	|| Microsoft Outlook Issues	||System Administrator
    *** Script: KB0000033	|| Eclipse configuration for Android development	||System Administrator
    *** Script: KB0000032	|| Getting Around in Windows	||System Administrator
    *** Script: KB0000031	|| How can I find the MAC address of my Ethernet or
       wireless interface?	||Sam Sorokin


