Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-10-2025 08:58 PM
1 ACCEPTED SOLUTION
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-22-2025 01:19 AM
Is issue still open @munukuntlak
*************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.
Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/dratulgrover [ Connect for 1-1 Session]
****************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.
Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/dratulgrover [ Connect for 1-1 Session]
****************************************************************************************************************
30 REPLIES 30
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
a month ago
generateScheduleName: function(appName, scheduleType, daysOfWeek, startTime, endTime) {
if (!appName || !scheduleType || !daysOfWeek || !startTime || !endTime) {
gs.error('ScheduleNameGenerator: Missing required parameters');
return 'Schedule_Error';
}
var cleanAppName = this._cleanString(appName);
var cleanScheduleType = this._cleanString(scheduleType);
var dayAbbreviations = this._convertDaysToAbbreviation(daysOfWeek);
var scheduleName = cleanAppName + '_' + cleanScheduleType + '_' + dayAbbreviations + '[' + startTime + ':' + endTime + ']';
gs.info('ScheduleNameGenerator: Generated name = ' + scheduleName);
return scheduleName;
},
_cleanString: function(str) {
if (!str) return '';
return String(str).replace(/[^a-zA-Z0-9]/g, '');
},
_convertDaysToAbbreviation: function(daysNumeric) {
if (!daysNumeric) return 'AllDays';
var dayMap = {
'1': 'Mon',
'2': 'Tue',
'3': 'Wed',
'4': 'Thu',
'5': 'Fri',
'6': 'Sat',
'7': 'Sun'
};
var numericStr = String(daysNumeric);
var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
var dayAbbrevs = [];
for (var i = 0; i < dayNumbers.length; i++) {
var num = dayNumbers[i].trim();
if (dayMap[num]) {
dayAbbrevs.push(dayMap[num]);
}
}
return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
},
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
generateCompleteScheduleName: function(scheduleId, appName, scheduleType, newDays, newStartTime, newEndTime, timezone, allDay) {
try {
var cleanAppName = this._cleanString(appName);
var cleanScheduleType = this._cleanString(scheduleType);
var scheduleName = cleanAppName + '_' + cleanScheduleType;
var existingEntries = this._getExistingEntries(scheduleId);
for (var i = 0; i < existingEntries.length; i++) {
var entry = existingEntries[i];
scheduleName += ' ' + entry.displayText;
}
var newTimingString = this._generateDaysForName(newDays, newStartTime, newEndTime, allDay);
scheduleName += ' ' + newTimingString;
scheduleName += ' ' + timezone;
gs.info('ScheduleNameGenerator: Complete name = ' + scheduleName);
return scheduleName;
} catch (ex) {
gs.error('ScheduleNameGenerator.generateCompleteScheduleName: ' + ex.message);
return 'Schedule_Error';
}
},
_getExistingEntries: function(scheduleId) {
var entries = [];
var gr = new GlideRecord('cmn_schedule_span');
gr.addQuery('schedule', scheduleId);
gr.addQuery('type', 'include'); // Not exclude type
gr.query();
while (gr.next()) {
var days = gr.getValue('days_of_week') || '';
var startTime = this._extractTimeFromDateTime(gr.getValue('start_date_time'));
var endTime = this._extractTimeFromDateTime(gr.getValue('end_date_time'));
var allDay = gr.getValue('all_day') == 'true' || gr.getValue('all_day') == '1';
var displayText = this._generateDaysForName(days, startTime, endTime, allDay);
entries.push({
sys_id: gr.getUniqueValue(),
name: gr.getValue('name'),
displayText: displayText
});
}
return entries;
},
_generateDaysForName: function(daysOfWeek, startTime, endTime, allDay) {
var days = '';
var dateString = '';
if (allDay) {
dateString = '00:00-23:59';
} else {
dateString = startTime + '-' + endTime;
}
var cleanDays = daysOfWeek.replace(/,/g, '');
if (cleanDays === '12345') {
days = 'Mon-Fri[' + dateString + ']';
} else if (cleanDays === '67') {
days = 'Sat-Sun[' + dateString + ']';
} else if (cleanDays === '123456') {
days = 'Mon-Sat[' + dateString + ']';
} else if (cleanDays === '1234567') {
days = 'Mon-Sun[' + dateString + ']';
} else {
var dayMap = {
'1': 'Mon',
'2': 'Tue',
'3': 'Wed',
'4': 'Thu',
'5': 'Fri',
'6': 'Sat',
'7': 'Sun'
};
var dayNames = [];
for (var i = 0; i < cleanDays.length; i++) {
var dayNum = cleanDays.charAt(i);
if (dayMap[dayNum]) {
dayNames.push(dayMap[dayNum]);
}
}
days = dayNames.join(',') + '[' + dateString + ']';
}
return days;
},
_extractTimeFromDateTime: function(dateTimeValue) {
if (!dateTimeValue) return '00:00';
var dateTimeStr = String(dateTimeValue).trim();
if (dateTimeStr.indexOf('TZID=') === 0) {
var parts = dateTimeStr.split(';');
if (parts.length > 1) dateTimeStr = parts[1];
}
if (dateTimeStr.indexOf('T') > -1 && dateTimeStr.indexOf('-') === -1) {
var hour = dateTimeStr.substring(9, 11);
var minute = dateTimeStr.substring(11, 13);
return hour + ':' + minute;
}
if (dateTimeStr.indexOf(' ') > -1) {
var timePart = dateTimeStr.split(' ')[1];
if (timePart) {
var timeComponents = timePart.split(':');
if (timeComponents.length >= 2) {
return timeComponents[0] + ':' + timeComponents[1];
}
}
}
return '00:00';
},
_cleanString: function(str) {
if (!str) return '';
return String(str).replace(/[^a-zA-Z0-9]/g, '');
},
_convertDaysToAbbreviation: function(daysNumeric) {
if (!daysNumeric) return 'AllDays';
var dayMap = {
'1': 'Mon',
'2': 'Tue',
'3': 'Wed',
'4': 'Thu',
'5': 'Fri',
'6': 'Sat',
'7': 'Sun'
};
var numericStr = String(daysNumeric);
var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
var dayAbbrevs = [];
for (var i = 0; i < dayNumbers.length; i++) {
var num = dayNumbers[i].trim();
if (dayMap[num]) {
dayAbbrevs.push(dayMap[num]);
}
}
return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
},var scheduleRefRecord = fd_data.schedule_ref_record.toString(); // Schedule sys_id
var appName = fd_data.application_name;
var scheduleType = fd_data.schedule_type;
var newDays = fd_data.days_of_week;
var newStartTime = fd_data.start_time;
var newEndTime = fd_data.end_time;
var timezone = fd_data.timezone;
var allDay = fd_data.all_day == 'true' || fd_data.all_day == true;
// Generate complete schedule name with all entries
var generator = new ScheduleNameGenerator();
var completeName = generator.generateCompleteScheduleName(
scheduleRefRecord,
appName,
scheduleType,
newDays,
newStartTime,
newEndTime,
timezone,
allDay
);
return completeName;
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago
regenerateScheduleNameFromEntries: function(scheduleId) {
try {
var schedule = new GlideRecord('cmn_schedule');
if (!schedule.get(scheduleId)) {
gs.error('ScheduleNameGenerator: Schedule not found: ' + scheduleId);
return 'Schedule_Error';
}
var appName = schedule.getValue('name') || 'App';
var scheduleType = schedule.getValue('type') || 'Schedule';
var timezone = schedule.getValue('time_zone') || 'US/Eastern';
var cleanAppName = this._cleanString(appName);
var cleanScheduleType = this._cleanString(scheduleType);
var scheduleName = cleanAppName + '_' + cleanScheduleType;
var gr = new GlideRecord('cmn_schedule_span');
gr.addQuery('schedule', scheduleId);
gr.query();
while (gr.next()) {
var days = gr.getValue('days_of_week') || '';
var startTime = this._extractTimeFromDateTime(gr.getValue('start_date_time'));
var endTime = this._extractTimeFromDateTime(gr.getValue('end_date_time'));
var allDay = gr.getValue('all_day') == 'true' || gr.getValue('all_day') == '1';
var displayText = this._generateDaysForName(days, startTime, endTime, allDay);
scheduleName += ' ' + displayText;
}
scheduleName += ' ' + timezone;
gs.info('ScheduleNameGenerator: Regenerated name = ' + scheduleName);
return scheduleName;
} catch (ex) {
gs.error('ScheduleNameGenerator.regenerateScheduleNameFromEntries: ' + ex.message);
return 'Schedule_Error';
}
},
_generateDaysForName: function(daysOfWeek, startTime, endTime, allDay) {
var days = '';
var dateString = '';
if (allDay) {
dateString = '00:00-23:59';
} else {
dateString = startTime + '-' + endTime;
}
var cleanDays = daysOfWeek.replace(/,/g, '');
if (cleanDays === '12345') {
days = 'Mon-Fri[' + dateString + ']';
} else if (cleanDays === '67') {
days = 'Sat-Sun[' + dateString + ']';
} else if (cleanDays === '123456') {
days = 'Mon-Sat[' + dateString + ']';
} else if (cleanDays === '1234567') {
days = 'Mon-Sun[' + dateString + ']';
} else {
var dayMap = {
'1': 'Mon',
'2': 'Tue',
'3': 'Wed',
'4': 'Thu',
'5': 'Fri',
'6': 'Sat',
'7': 'Sun'
};
var dayNames = [];
for (var i = 0; i < cleanDays.length; i++) {
var dayNum = cleanDays.charAt(i);
if (dayMap[dayNum]) {
dayNames.push(dayMap[dayNum]);
}
}
days = dayNames.join(',') + '[' + dateString + ']';
}
return days;
},
_extractTimeFromDateTime: function(dateTimeValue) {
if (!dateTimeValue) return '00:00';
var dateTimeStr = String(dateTimeValue).trim();
if (dateTimeStr.indexOf('TZID=') === 0) {
var parts = dateTimeStr.split(';');
if (parts.length > 1) dateTimeStr = parts[1];
}
if (dateTimeStr.indexOf('T') > -1 && dateTimeStr.indexOf('-') === -1) {
var hour = dateTimeStr.substring(9, 11);
var minute = dateTimeStr.substring(11, 13);
return hour + ':' + minute;
}
if (dateTimeStr.indexOf(' ') > -1) {
var timePart = dateTimeStr.split(' ')[1];
if (timePart) {
var timeComponents = timePart.split(':');
if (timeComponents.length >= 2) {
return timeComponents[0] + ':' + timeComponents[1];
}
}
}
return '00:00';
},
_cleanString: function(str) {
if (!str) return '';
return String(str).replace(/[^a-zA-Z0-9]/g, '');
},
_convertDaysToAbbreviation: function(daysNumeric) {
if (!daysNumeric) return 'AllDays';
var dayMap = {
'1': 'Mon',
'2': 'Tue',
'3': 'Wed',
'4': 'Thu',
'5': 'Fri',
'6': 'Sat',
'7': 'Sun'
};
var numericStr = String(daysNumeric);
var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
var dayAbbrevs = [];
for (var i = 0; i < dayNumbers.length; i++) {
var num = dayNumbers[i].trim();
if (dayMap[num]) {
dayAbbrevs.push(dayMap[num]);
}
}
return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
},var scheduleId = fd_data.schedule_ref_record.toString();
var generator = new ScheduleNameGenerator();
return generator.regenerateScheduleNameFromEntries(scheduleId);
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 weeks ago - last edited 4 weeks ago
regenerateScheduleNameFromEntries: function (scheduleId, applicationName, scheduleType) {
try {
gs.info('SCHHH :: START regenerateScheduleNameFromEntries');
var scheduleName = '';
var schedule = new GlideRecord('cmn_schedule');
schedule.addQuery('sys_id', scheduleId);
schedule.query();
if (schedule.next()) {
var timezone = schedule.getValue('time_zone') || 'US/Eastern';
var appName = applicationName || 'Application';
var schedType = scheduleType || 'Schedule';
scheduleName = appName + ' ' + schedType;
gs.info('SCHHH :: Initial Schedule Name = ' + scheduleName);
var entriesJSON = this._getScheduleEntries(scheduleId);
gs.info('SCHHH :: Entries raw value = ' + entriesJSON);
var entries = entriesJSON;
// ✅ SAFE parsing
if (typeof entriesJSON === 'string') {
gs.info('SCHHH :: Parsing entries JSON string');
entries = JSON.parse(entriesJSON);
} else {
gs.info('SCHHH :: Entries already an object, skipping JSON.parse');
}
gs.info('SCHHH :: Number of entries = ' + entries.length);
for (var i = 0; i < entries.length; i++) {
gs.info('SCHHH :: Entry ' + (i + 1) + ' days = ' + entries[i].days);
scheduleName += ' ' + entries[i].days;
}
scheduleName += ' - ' + timezone;
gs.info('SCHHH :: Final Schedule Name = ' + scheduleName);
}
gs.info('SCHHH :: END regenerateScheduleNameFromEntries');
return scheduleName;
} catch (ex) {
gs.error('SCHHH :: Exception in regenerateScheduleNameFromEntries - ' + ex.message);
return 'Schedule_Error';
}
},
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
