js/generating-new-issues/newsletter-every-month.js (44 lines of code) (raw):

var entities = require('@jetbrains/youtrack-scripting-api/entities'); var MONTHS = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; var DAY_IN_MS = 24 * 60 * 60 * 1000; exports.rule = entities.Issue.onSchedule({ title: 'Internal newsletter', search: '#DA-1', // anchor issue; it is required to ensure that // this rule is executed exactly once according to schedule cron: '0 0 19 15 1/1 ? *', // on the 15th day of every month at 19:00 action: function(ctx) { var date = new Date(Date.now() + 31 * DAY_IN_MS); date.setDate(1); var month = MONTHS[date.getMonth()]; var year = date.getFullYear(); var newIssue = new entities.Issue(ctx.currentUser, ctx.issue.project, month + ' ' + year + ' Internal Newsletter'); newIssue.fields.Assignee = ctx.author; newIssue.fields.Subsystem = ctx.Subsystem.Newsletters; newIssue.fields[ctx.DD.name] = date.getTime(); }, requirements: { Assignee: { type: entities.User.fieldType }, Subsystem: { type: entities.OwnedField.fieldType, Newsletters: {} }, DD: { type: entities.Field.dateType, name: 'Due Date' }, author: { type: entities.User, login: 'root' }, da: { type: entities.Issue, id: 'DA-1' } } });