// ==UserScript==
// @name Emailhand2
// @namespace Violentmonkey Scripts
// @match https://sap.service-now.com/*
// @grant none
// @version 2.3
// @author -
// @run-at document-start
// @description 29/06/2022 09:12:18
// ==/UserScript==
(() => { // webpackBootstrap
/******/
"use strict";
async function pollDOM() {
setTimeout(function(){
//do what you need here
try{
var list2 = null;
if(document.getElementById("gsft_main").contentWindow.document.getElementsByClassName('list2_body') != null){
list2 = document.getElementById("gsft_main").contentWindow.document.getElementsByClassName('vt');
const arr = Array.from(list2);
console.log(arr[0].textContent);
var texto = "<!DOCTYPE html><html><body><table border=\"1px\" style=\"width: 100%; margin-bottom: 0px; outline: none;\"> <tr>";
var tab = [];
var contador = 0;
var contadorP = 0;
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
try{
for (var i = 0; i < 200; ++i) {
switch(contador) {
case 0:
// company
console.log(contador);
console.log(arr[i].textContent);
texto = texto + "<td>";
texto = texto + arr[i].textContent;
window['obj' + contadorP] = new Object();
window['obj' + contadorP].company = arr[i].textContent;
break;
case 1:
// Functional Area
console.log(contador);
console.log(arr[i].textContent);
texto = texto + "<td>";
texto = texto + arr[i].textContent;
window['obj' + contadorP].fa = arr[i].textContent;
break;
case 2:
// escalataion case
console.log(contador);
console.log(arr[i].innerHTML);
texto = texto + "<td style=\"word-wrap: break-word\">";
texto = texto + arr[i].outerHTML;
window['obj' + contadorP].ec = arr[i].outerHTML;
break;
case 3:
// state
console.log(contador);
console.log(arr[i].textContent);
texto = texto + "<td>";
texto = texto + arr[i].textContent;
window['obj' + contadorP].state = arr[i].textContent;
break;
case 4:
// request reason
console.log(contador);
console.log(arr[i].textContent);
if(arr[i].textContent == 'xTec' ){
texto = texto + "<td bgcolor=\"green\">";
}else{
if((arr[i].textContent == 'Go-Live endangered') || (arr[i].textContent == 'PE Critical')){
texto = texto + "<td bgcolor=\"yellow\">";
}else{
texto = texto + "<td bgcolor=\"red\">";
}
}
texto = texto + arr[i].textContent;
window['obj' + contadorP].cri = arr[i].textContent;
break;
case 5:
// assigned to
console.log(contador);
console.log(arr[i].textContent);
texto = texto + "<td>";
texto = texto + arr[i].textContent;
window['obj' + contadorP].at = arr[i].textContent;
break;
case 6:
// case
console.log(contador);
console.log(arr[i].outerHTML);
texto = texto + "<td style=\"word-wrap: break-word\">";
texto = texto + arr[i].outerHTML;
break;
case 7:
// escalation justification
console.log(contador);
console.log(arr[i].title);
texto = texto + "<td>";
if(arr[i].title.includes("Q&D Team Qualification")){
texto = texto + arr[i].title.slice(65,200);
}else{
texto = texto + arr[i].textContent.slice(0,200);
}
break;
case 8:
// comments and work notes
console.log(contador);
console.log(arr[i].title);
texto = texto + "<td>";
texto = texto + arr[i].outerHTML.slice(68,400);
window['obj' + contadorP].cw = arr[i].outerHTML.slice(68,400);
break;
case 9:
// code block
break;
case 10:
// code block
contador = 0;
texto = texto + "<\\tr> <tr>";
break;
default:
// code block
}
if((arr[i].className == "vt vt-spacer") || (contador == 10)){
contador = 0;
contadorP++;
texto = texto + "<\\tr> <tr>";
}else{
contador++;
texto = texto + "<\\td>";
}
}
}catch(e){
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, 'g'), replace);
}
texto = texto + "<\\td>";
texto = texto + "<\\tr>";
texto = texto + "<\\table></body></html>";
texto = replaceAll(texto,"nav_to.do?","https://sap.service-now.com/nav_to.do");
texto = replaceAll(texto,"<br>","");
texto = replaceAll(texto, "task.do?","https://sap.service-now.com/task.do");
texto = replaceAll(texto, "href=\"sn_customerservice_case.do","href=\"https://sap.service-now.com/sn_customerservice_case.do");
console.log(texto);
function copyToClipboard(string) {
let textarea;
let result;
try {
textarea = document.createElement('textarea');
textarea.setAttribute('readonly', true);
textarea.setAttribute('contenteditable', true);
textarea.style.position = 'fixed'; // prevent scroll from jumping to the bottom when focus is set.
textarea.value = string;
document.body.appendChild(textarea);
textarea.focus();
textarea.select();
const range = document.createRange();
range.selectNodeContents(textarea);
const sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
textarea.setSelectionRange(0, textarea.value.length);
result = document.execCommand('copy');
} catch (err) {
console.error(err);
result = null;
} finally {
document.body.removeChild(textarea);
}
// manual copy fallback using prompt
if (!result) {
const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
const copyHotkey = isMac ? '⌘C' : 'CTRL+C';
//result = prompt(`Press ${copyHotkey}`, string); // eslint-disable-line no-alert
if (!result) {
return false;
}
}
return true;
}
copyToClipboard(texto);
function download(data, filename, type) {
var file = new Blob([data], {type: type});
if (window.navigator.msSaveOrOpenBlob) // IE10+
window.navigator.msSaveOrOpenBlob(file, filename);
else { // Others
var a = document.createElement("a"),
url = URL.createObjectURL(file);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
window.open(url, '_blank').focus();
setTimeout(function() {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 0);
}
}
try{
var xcel = "<!DOCTYPE html><html><body><table border=\"1px\" style=\"width: 100%; margin-bottom: 0px; outline: none;\"> ";
console.log(xcel);
const weekday = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
function skill(name) {
var nome = name.split("(");
console.log(nome[0]);
switch(nome[0]) {
case 'Thiago Chaim ':
return 'Basis/FI';
break;
case 'Fabiana Martins ':
return 'Basis';
break;
case 'Rafael Guimbala ':
return 'Generic';
break;
case 'Marcos Ito ':
return 'Basis';
break;
case 'Victor Garcia ':
return 'Basis';
break;
case 'Caroline Chinelatto ':
return 'Ariba';
break;
case 'Daniel Kaoro ':
return 'ALM';
break;
case 'Silvia Guedes ':
return 'SCM/EWM';
break;
case 'Kalyan Batabyal ':
return 'Generic';
break;
case 'Vineet Shali ':
return 'HANA';
break;
case 'Kelvin Oko ':
return 'SFSF';
break;
case 'Tatiana Cimino ':
return 'Basis/Upgrade/Migration';
break;
case 'Erick Verdugo ':
return 'CAR';
break;
default:
return 'Skill not Found';
}
}
function area(name) {
switch(name) {
case 'ARIBA - PROCUREMENT':
return 'Cloud';
break;
case 'SF EC, INT & ANALYTICS':
return 'Cloud';
break;
case 'NW CORE':
return 'Basis';
break;
case 'HANA PLATFORM':
return 'Databases';
break;
case 'NW PLATFORM & TECH':
return 'Databases';
break;
case 'ARIBA':
return 'Cloud';
break;
default:
return 'Application';
}
}
const d = new Date();
let day = weekday[d.getDay()];
for(var x = 0; x < contadorP; x++){
console.log(xcel);
//data
xcel = xcel + "<tr>";
xcel = xcel + "<td>";
xcel = xcel + window['obj' + x].company;
xcel = xcel + "<td>";
xcel = xcel + window['obj' + x].fa;
// xcel = xcel + "<\\td>";
xcel = xcel + "<td>";
if(window['obj' + x].cri == 'xTec' ){
xcel = xcel + "<td bgcolor=\"green\">";
}else{
if((window['obj' + x].cri == 'Go-Live endangered') || (window['obj' + x].cri == 'PE Critical')){
xcel = xcel + "<td bgcolor=\"yellow\">";
}else{
xcel = xcel + "<td bgcolor=\"red\">";
}
}
xcel = xcel + window['obj' + x].cri;
//assignd to
xcel = xcel + "<td>";
if(window['obj' + x].at == '(empty)'){
var last = xcel + window['obj' + x].cw.slice(22);
var lastName = last.split("(");
xcel = xcel + lastName[0];
console.log("----"+lastName);
}else{
xcel = xcel + window['obj' + x].at;
}
xcel = xcel + "<td>";
xcel = xcel + window['obj' + x].state;
//xcel = xcel + "<\\td>";
//skill
//xcel = xcel + "<td>";
//xcel = xcel + skill(window['obj' + x].at);
//xcel = xcel + "<\\td>";
// data MM/DD/YYYY
//xcel = xcel + "<td>";
var e = new Date();
var date = new Date(e);
var newdate= (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
//xcel = xcel + newdate;
//xcel = xcel + "<\\td>";
//quantity
//xcel = xcel + "<td>";
// xcel = xcel + "1";
//xcel = xcel + "<\\td>";
xcel = xcel + "<td>";
//escalation
var escalationURL = window['obj' + x].ec;
escalationURL = replaceAll(escalationURL,"a class","a style=\"white-space: nowrap\" class");
xcel = xcel + escalationURL;
//xcel = xcel + "<\\td>";
//skill required
//xcel = xcel + "<td>";
//xcel = xcel + area(window['obj' + x].fa);
//xcel = xcel + "<\\td>";
//area
xcel = xcel + "<td>";
var comments = window['obj' + x].cw;
comments = replaceAll(comments,"br","");
comments = replaceAll(comments,"td","");
comments = replaceAll(comments,"tr","");
comments = replaceAll(comments,"&","");
comments = replaceAll(comments,"<p","");
xcel = xcel + comments;
//xcel = xcel + "<\\td>";
//xcel = xcel + "<\\td>";
//xcel = xcel + "<\\tr>";
}
xcel = xcel + "</body></html>";
console.log(window['obj0']);
console.log(window['obj1']);
console.log("contadorP= "+contadorP);
//download(xcel, 'myfilename.xls', 'application/vnd.ms-excel');
xcel = replaceAll(xcel,"nav_to.do?","https://sap.service-now.com/nav_to.do");
xcel = replaceAll(xcel, "task.do?","https://sap.service-now.com/task.do");
xcel = replaceAll(xcel,"<br>","");
xcel = replaceAll(xcel,"#","");
xcel = replaceAll(xcel, "href=\"sn_customerservice_case.do","href=\"https://sap.service-now.com/sn_customerservice_case.do");
var emailTo = 'DL_6022C9292BF0A1027EAF7C8C@global.corp.sap';
var emailSubject = 'Handover';
var emlContent = "data:message/rfc822 eml;charset=utf-8,";
emlContent += 'To: '+emailTo+'\n';
emlContent += 'Subject: '+emailSubject+'\n';
emlContent += 'X-Unsent: 1'+'\n';
emlContent += 'Content-Type: text/html'+'\n';
emlContent += ''+'\n';
emlContent += xcel;
var encodedUri = encodeURI(emlContent); //encode spaces etc like a url
//console.log("encoded->"+encodedUri);
var a = document.createElement('a'); //make a link in document
var linkText = document.createTextNode("fileLink");
a.appendChild(linkText);
a.href = encodedUri;
a.id = 'fileLink';
a.download = 'filename.eml';
a.style = "display:none;"; //hidden link
document.body.appendChild(a);
document.getElementById('fileLink').click(); //click the link
console.log("xcel"+xcel);
}catch(e){
console.log(e);
}
}
console.log(texto);
//alert('copied');
function generate_table() {
// creates a <table> element and a <tbody> element
const tbl = document.createElement("table");
const tblBody = document.createElement("tbody");
// creating all cells
for (let i = 0; i < 11; i++) {
// creates a table row
const row = document.createElement("tr");
for (let j = 0; j < 9; j++) {
// Create a <td> element and a text node, make the text
// node the contents of the <td>, and put the <td> at
// the end of the table row
const cell = document.createElement("td");
const cellText = document.createTextNode("cell in row "+i+", column "+j);
cell.appendChild(cellText);
row.appendChild(cell);
}
// add the row to the end of the table body
tblBody.appendChild(row);
}
// put the <tbody> in the <table>
tbl.appendChild(tblBody);
// appends <table> into <body>
// ---------> document.body.appendChild(tbl);
//console.log(tblBody);
var textArea = document.createElement("textarea");
textArea.value = tblBody;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("Copy");
textArea.remove();
// sets the border attribute of tbl to '2'
tbl.setAttribute("border", "2");
}
//generate_table();
//alert('copied');
//console.log(newvar);
//console.log(txt2);
//var link = "mailto:frontoffice@sap.com" + "?cc=teamlead@sap.com" + "&subject=" + "&body=" + arr;
//window.location.href = link;
}
}
catch(e){
console.log(e);
//setTimeout(pollDOM, 1000);
}
//alert('copied');
}, 8000);
}
function checkURL() {
pollDOM();
//setTimeout(checkURL, 300);
}
checkURL();
/******/ })()