---
sourceDocument: Referência de API do Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Referência de API do Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# Inclusões de script

# Inclusões de script {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 10 min. de leitura

As inclusões de script são usadas para armazenar o JavaScript executado no servidor.

Crie inclusões de script para armazenar funções e classes JavaScript para uso por scripts de servidor. Cada inclusão de script define uma classe de objeto ou uma função.

Considere usar inclusões de script em vez de regras de negócio globais porque as inclusões de script só são carregadas mediante solicitação. Para obter mais informações, consulte [Configurações de privacidade em inclusões de script de cliente chamável](https://servicenow-prod.fluidtopics.net/hBKCoLz4tMazFF7P4Z6kOw#c_ChangePrivacyAll "As configurações de privacidade para inclusões de script de cliente chamável (CCSI) determinam quem pode acessar uma inclusão de script de cliente chamável.") e [Inclusões de script de descoberta](https://servicenow-prod.fluidtopics.net/hBKCoLz4tMazFF7P4Z6kOw#c_UsingDiscoveryScriptIncludes "Descoberta inclusões de script definem classes JavaScript que você pode usar para realizar Descoberta tarefas.").

Para obter exemplos adicionais de scripts, consulte [Scripts úteis](https://servicenow-prod.fluidtopics.net/yrR1t10yzRo41PRhgW2v4Q "Scripts que fornecem funcionalidade útil não incluída no sistema principal.").

## Formulário de inclusão de script {#ariaid-title2}

As inclusões de script têm um nome, uma descrição e um script. Eles também especificam se estão ativos ou não e se podem ser chamados de um client script. Exiba uma inclusão de script existente ou crie uma nova usando o formulário Inclusão de script.
Para acessar as inclusões de script, navegue até Definições do sistema \> Inclusões de script.  
{#t_ScriptIncludeForm__table_ntx_fcg_tq__entry__2}

| Campo | Descrição |
|-|-|
| Nome | O nome da inclusão de script. Se você estiver definindo uma classe, isso deve corresponder ao nome da classe, do prototipo e do tipo. Se você estiver usando uma inclusão de script sem classe (sob demanda), o nome deverá corresponder ao nome da função. |
| Nome da API | Nome da API somente leitura e preenchido automaticamente. |
| Cliente chamável | Torna a inclusão de script disponível para client scripts, filtros de lista/relatório, qualificadores de referência ou se especificado como parte do URL. Quando selecionado, o Link relacionado a controles de acesso fica disponível. Para obter mais informações, consulte [Configurações de privacidade em inclusões de script de cliente chamável](https://servicenow-prod.fluidtopics.net/hBKCoLz4tMazFF7P4Z6kOw#c_ChangePrivacyAll "As configurações de privacidade para inclusões de script de cliente chamável (CCSI) determinam quem pode acessar uma inclusão de script de cliente chamável."). |
| Aplicação | A aplicação em que esta inclusão de script reside. |
| Acessível de | Define quais aplicações podem acessar este script: Todos os escopos de aplicação :   Pode ser acessado de qualquer escopo da aplicação. Somente este escopo da aplicação :   Só pode ser acessado a partir do escopo da aplicação atual. {#t_ScriptIncludeForm__AccessibleFrom} |
| Ativo | Habilita a inclusão de script quando selecionada. Desmarque o campo ativo para desabilitar a inclusão de script. |
| Descrição | Fornece conteúdo descritivo sobre a inclusão de script. |
| Script | Define o script do lado do servidor a ser executado quando chamado de outros scripts. O script deve definir uma única classe JavaScript ou uma função global. O nome da classe ou função deve corresponder ao campo Nome. |
| Pacote | O pacote que contém esta inclusão de script. |
| Criado(a) por | O usuário que criou esta inclusão de script. |
| Atualizado por | O usuário que atualizou mais recentemente esta inclusão de script. |
| Política de proteção | Define o nível de proteção da inclusão de script: Nenhum(a) :   Permite que qualquer pessoa leia e edite esta inclusão de script baixada ou instalada. Somente leitura :   Permite que qualquer pessoa leia valores desta inclusão de script baixada ou instalada. Ninguém pode alterar os valores de script na instância em que baixa ou instala a inclusão de script. Protegido :   Fornece proteção de propriedade intelectual para desenvolvedores de aplicações. Os clientes que baixam o script include não podem ver o conteúdo do campo de script. O script é criptografado na memória para impedir que usuários não autorizados o vejam em texto simples. |
| Listas relacionadas na exibição de formulário: ||
| Versões | Mostra todas as versões da inclusão de script. Use esta lista para comparar versões ou reverter para uma versão anterior. Consulte [Versões](https://www.servicenow.com/docs/access?context=c_Versions&version=xanadu&pubname=xanadu-application-development&ft:locale=en-US). |
| Controles de acesso | Torna-se disponível quando a caixa de seleção Cliente chamável está marcada e fica oculta nas inclusões de script padrão. Use para proteger um CCSI contra uso não autorizado quando o acesso público não for concedido. |
[Tabela 1. Formulário de inclusão de script]

{#t_ScriptIncludeForm__table_ntx_fcg_tq}

## Usar inclusões de script {#ariaid-title3}

As inclusões de script são encontradas em Definição do sistema ou IU do sistema. Você pode chamar inclusões de script existentes a partir de um script ou criar uma nova inclusão de script.
Para criar uma inclusão de script totalmente nova, você pode seguir o formato de qualquer uma das inclusões de script existentes. Neste exemplo, o nome da inclusão de script é NewInclude e há uma única função chamada `myFunction`. É importante que o nome da inclusão de script corresponda ao nome da classe, do prototipo e do tipo. Quando você cria uma nova inclusão de script e atribui um nome a ela, o sistema fornece um snippet de código com a classe e o protótipo configurados corretamente.  

    var NewInclude =Class.create();
     
    NewInclude.prototype={
      initialize :function(){},
     
      myFunction :function(){<Put function code here>},
     
      type :'NewInclude'};

Você pode usar a linha `myFunction` assim:  

    var foo =new NewInclude();
    foo.myFunction();

## Inclusões de script acionáveis pelo cliente {#ariaid-title4}

As Inclusões de script de cliente chamável (CCSI) disponibilizam a inclusão de script para scripts de cliente, filtros de lista/relatório, qualificadores de referência ou, se especificado como parte do URL.

### Antes de Iniciar

Função necessária: administrador

### Procedimento

1. Navegar até Definição do SistemaInclusões de script.
2. Selecione Novo ou selecione uma inclusão de script existente para exibir ou editar.  
   Consulte [Usar inclusões de script](https://servicenow-prod.fluidtopics.net/hBKCoLz4tMazFF7P4Z6kOw#c_UseScriptIncludes "As inclusões de script são encontradas em Definição do sistema ou IU do sistema. Você pode chamar inclusões de script existentes a partir de um script ou criar uma nova inclusão de script.") para obter informações adicionais sobre como escrever inclusões de script.
3. Preencha o formulário e marque a caixa de seleção Cliente chamável.  
   Um seletor de função aparece para selecionar uma função do usuário e criar automaticamente uma entrada de controle de acesso. Selecione uma função de usuário e clique em OK.  
   Nota:  
   Para desabilitar a janela do seletor de função, defina glide.script.ccsi.enable_acl_create_ux como falso.

   Um novo registro CCSI com um controle de acesso baseado em função é criado. O link relacionado ao controle de acesso se torna disponível com a marcação da caixa de seleção Cliente calIable.
{#client-callable-script-includes__steps_m4d_llb_rtb}

### Configurações de privacidade em inclusões de script de cliente chamável {#ariaid-title5}

As configurações de privacidade para inclusões de script de cliente chamável (CCSI) determinam quem pode acessar uma inclusão de script de cliente chamável.

#### Configuração de privacidade privada {#c_ChangePrivacyAll__section_x1t_fx3_ktb}

A configuração de privacidade privada significa que os convidados que acessam páginas públicas não podem acessar a inclusão de script de cliente chamável. Um script privado não pode ser executado por um usuário não conectado.

#### Configuração de privacidade pública {#c_ChangePrivacyAll__section_cm3_3x3_ktb}

Uma configuração de privacidade pública significa que o script do cliente pode ser executado por usuários não conectados que criam uma solicitação HTTP apropriada. Isso pode criar um problema de segurança se o client script fornecer informações confidenciais.  
As inclusões de script a seguir permanecem públicas por padrão porque [Tornar páginas de IU públicas ou privadas](https://www.servicenow.com/docs/access?context=t_MakeAPagePublic&version=xanadu&pubname=xanadu-platform-security&ft:locale=en-US) precisam acessá-las:

* GlideSystemAjax
* SysMessageAjax
* KnowledgeMessagingAjax
* KnowledgeAjax
* PasswordResetAjax
{#c_ChangePrivacyAll__ul_qbw_12g_tq}

#### Definir privacidade em todas as inclusões de script de cliente chamável {#c_ChangePrivacyAll__section_ikm_xk4_jtb}

Altere a configuração de privacidade em todas as inclusões de script de cliente chamável.

Para fornecer mais controle sobre todas as inclusões de script de cliente chamável, os administradores podem adicionar a propriedade glide.script.ccsi.ispublic. Esta propriedade muda a visibilidade das inclusões de script de cliente chamável, tornando-as públicas ou privadas. Configure a propriedade da seguinte forma:  
{#c_ChangePrivacyAll__table_ndm_xfg_tq__entry__2}

| Título | Propriedade |
|-|-|
| Nome | glide.script.ccsi.ispublic |
| Tipo | verdadeiro\|falso |
| Valor | falso |
[Tabela 2. Configurar propriedade]

{#c_ChangePrivacyAll__table_ndm_xfg_tq}  
Nota:  
Para saber mais sobre essa propriedade, consulte Privacidade em inclusões de script de cliente chamável em Configurações de proteção de segurança da instância.

#### Alterar a privacidade em uma única inclusão de script de cliente chamável {#ariaid-title6}

Altere a configuração de privacidade de uma única inclusão de script de cliente chamável adicionando a função isPublic().

A configuração isPublic () tem precedência sobre a propriedade glide.script.ccsi.ispublic. Por exemplo, se a propriedade estiver definida como falsa, tornando todas as inclusões de script de cliente chamável privadas e um script definir isPublic() como verdadeiro, o script será público.

Para mudar a privacidade de uma única inclusão de script de cliente chamável, adicione o seguinte método à inclusão de script:  

    isPublic:function(){return[true/false];},

Torne o script do cliente NewInclude privado.

    var NewInclude =Class.create();
     
    NewInclude.prototype={
       initialize:function(){},
     
       myFunction:function(){//Put function code here},
       isPublic:function(){return false;},
     
       type:'NewInclude'};

#### Segurança em inclusões de script de cliente chamável {#ariaid-title7}

Protule sua inclusão de script de cliente chamável (CCSI) contra uso não autorizado. Para todos os registros CCSI que são criados em uma aplicação do cliente, são exibidas recomendações que podem ajudar a reduzir o risco de segurança.

Ao criar um CCSI, o sistema exibe as seguintes recomendações de segurança, caso ainda não tenham sido configuradas:

* Adicione ou defina um controle de acesso, a menos que o CCSI tenha acesso público.
* Use GlideRecordSecure em vez da API GlideRecord para melhorar a segurança, se o script consultar o banco de dados.

  Nota:  
  Para desabilitar as mensagens de recomendação de segurança, defina a propriedade glide.script.ccsi.customer_scoped.security_msgs_enabled como falsa na tabela sys_properties. O valor padrão é definido como verdadeiro.

{#security-ccsi__ul_ohx_k1j_ktb}

Consulte Configurações de proteção de segurança da instância para obter informações adicionais sobre conformidade de segurança.

## Inclusões de script de descoberta {#ariaid-title8}

Descoberta inclusões de script definem classes JavaScript que você pode usar para realizar Descoberta tarefas.  
Nota:  
Usuários com a função discovery_admin podem gravar inclusões de script. Siga as práticas recomendadas para scripts do lado do servidor e do lado do cliente para evitar problemas de segurança. Consulte o artigo de conhecimento [KB0550828](https://support.servicenow.com/kb_view.do?sysparm_article=KB0550828) para obter mais informações.

### Usando GlideRecordUtil para trabalhar com GlideRecords

GlideRecordUtil é uma classe de utilitário que fornece métodos que são úteis para trabalhar com GlideRecords durante Descoberta. Consulte [GlideRecordUtil](https://servicenow-prod.fluidtopics.net/pnbQrkmBf_BDGf7Qy04u6Q#c_GlideRecordUtilAPI "A inclusão de script GlideRecordUtil é uma classe de utilitário para trabalhar com GlideRecords.") para obter descrições dos métodos disponíveis.

### Como obter uma instância de GlideRecord

Para obter uma instância de GlideRecord para um determinado item de configuração e da classe e tabela corretas, use o método getCIGR(sys_id). Por exemplo, o código a seguir obtém o GlideRecord de um IC com o sys_id de 2dfd7c8437201000deeabfc8bcbe5d56:

    var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");

Para recuperar qualquer tabela hierárquica sem saber seu tipo de classe, use o método getGR(base_table, sys_id). Por exemplo, para obter um GlideRecord para um IC de classe de computador, talvez seja necessário distinguir se é uma classe de computador, servidor \[ Windows ou classe de servidor Linux. O uso deste método garante um GlideRecord com a classe correta. Classes diferentes têm atributos diferentes. Neste caso de uso, um servidor Windows tem atributos diferentes de um servidor Linux. O exemplo a seguir mostra como obter um GlideRecord na classe correta com seus atributos.

    var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");

### Obtendo todos os campos em um GlideRecord

O método getFields(now_GR) retorna um objeto JavaScript, como um hashmap, de todos os campos ou atributos que existem em um determinado GlideRecord.

    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
    var fields = new GlideRecordUtil().getFields(now_GR);
    gs.log(fields.join(" ")); // List all the fields that are in a computer CI

### Preenchendo campos de objeto GlideRecord

O método populateFromGR(hashmap, gr, ignore) permite que você pegue um objeto GlideRecord e preencha seus campos e valores em um objeto JavaScript. O terceiro argumento (<var class="keyword varname">ignore</var>) é um objeto JavaScript opcional que permite excluir determinados campos. Por exemplo, talvez você não se importe com os campos sys_created_by ou sys_updated_by em um GlideRecord.

    var objectToPopulate = { }; 
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var ignore = {"sys_created_on": true, "sys_updated_by": true}; 
    new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore); 
    // Now the objectToPopulate contains field/value pairs from the computer GlideRecord

O método mergeToGR(hashmap, gr, ignore) permite que você preencha um GlideRecord com um objeto emparelhado com campo/valor. O argumento ignorar impede que os campos especificados sejam atualizados. O exemplo de código a seguir atualiza os campos name e os de um registro de computador, mas não atualiza o campo sys_created_by :

    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
    var ignore = {"sys_created_by": true}; 
    new GlideRecordUtil().mergeToGR(obj, gr, ignore);
    gr.update();

### Obtendo hierarquias de tabela

O método getTables(table) retorna uma lista de hierarquias de tabelas, conforme mostrado no exemplo a seguir:

    var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
    gs.log(tables.join(",")); 
    // The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".

### Usando DiscoveryException e AutomationException {#ariaid-title9}

Ao escrever sensores Descoberta e scripts relacionados a sensores, convém usar DiscoveryException ou AutomationException para indicar que uma exceção veio de Descoberta.  
A inclusão de script DiscoveryException estende AutomationException, que estende a classe GenericException. O exemplo a seguir usa DiscoveryException para lançar uma exceção:

    function foo() { 
      if(//condition matches) throw new DiscoveryException("The message", "The cause"); }

O primeiro argumento usa a mensagem da exceção e o segundo argumento (opcional) usa a causa da exceção. Você também pode capturar a exceção e registrá-la em log, conforme mostrado no exemplo abaixo:

    try {
      foo(); 
    } 
    catch(e) { 
       if(e instanceof DiscoveryException)
         gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }

O exemplo acima também se aplica a AutomationException. DiscoveryException é normalmente usado para fornecer processamento de exceção especificamente para a Descoberta, enquanto AutomationException é usado para processamento de exceção que se aplica à Orquestração e Descoberta.

