ServiceNow - Update Ticket Number

Replace the number input field with a link to the current ticket

// ==UserScript==
// @name         ServiceNow - Update Ticket Number
// @version      0.0.4
// @description  Replace the number input field with a link to the current ticket
// @author       Matteo Lecca
// @match        *.service-now.com*/incident.do*
// @match        *.service-now.com*/sc_request.do*
// @match        *.service-now.com*/sc_req_item.do*
// @match        *.service-now.com*/sc_task.do*
// @match        *.service-now.com*/problem.do*
// @match        *.service-now.com*/change_request.do*
// @match        *.service-now.com*/rm_story.do*
// @match        *.service-now.com*/rm_enhancement.do*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=service-now.com
// @grant        none
// @license MIT
// @namespace    https://greasyfork.org/users/1246673
// ==/UserScript==

(function() {
    'use strict';

    let tableName = window.location.pathname.match(/\/(\w*)\.do/).pop();

    let elementId = tableName + '.number';

    if(!document.getElementById(elementId)) {
        return;
    }

    if(document.getElementById('sys_readonly.' + elementId)) {
        elementId = 'sys_readonly.' + elementId;
    }

    let numberInput = document.getElementById(elementId);
    let numberLink = document.createElement('a');
    numberLink.innerText = numberInput.value;
    numberLink.title = '[WK - SN] Convert Number in link';
    numberLink.href = 'https://' + window.location.hostname + '/nav_to.do?uri=' + tableName + '.do?sys_id=' + g_form.getUniqueValue();
    numberLink.onclick = copyURI;

    numberInput.replaceWith(numberLink);

    function copyURI(evt) {
        evt.preventDefault();
        navigator.clipboard.writeText(evt.target.getAttribute('href')).then(() => {
            g_form.addInfoMessage('[WK - SN] URL copied to clipboard');
        }, () => {
            g_form.addErrorMessage('[WK - SN] Error, it\'s not possible to copy the URL');
        });
    }
})();