google-apps-script - 每月创建一个全天活动,没有周末
问题描述
我正在尝试让 Google Apps 脚本在每个月的 10 日创建一个名为“发薪日”的活动,但如果 10 日是周六或周日,则必须在 10 日(星期五)之前的最后一个工作日创建该活动。
到目前为止,这是我设法得到的最接近的:
var start = new Date(); // The event start date
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31];
var days = [
CalendarApp.Weekday.SUNDAY,
CalendarApp.Weekday.MONDAY,
CalendarApp.Weekday.TUESDAY,
CalendarApp.Weekday.WEDNESDAY,
CalendarApp.Weekday.THURSDAY,
CalendarApp.Weekday.FRIDAY,
CalendarApp.Weekday.SATURDAY
];
var weekday = days[start.getDay()];
var monthday = start.getDate();
var mod = monthday % 7 - 1;
var good_days = numbers.slice(monthday-mod, monthday-mod+7)
var recurrence = CalendarApp.newRecurrence();
recurrence.addWeeklyRule().onlyOnWeekday(weekday).onlyOnMonthDays(good_days);
任何帮助将不胜感激。
解决方案
function createNextMonthsTrigger() {
let d = 10;
const nmd = new Date(new Date().getFullYear(), new Date().getMonth() + 1, d).getDay();
if (nmd == 6) {
d = 9;
} else if (nmd == 0) {
d = 8;
}
ScriptApp.getProjectTriggers().forEach(t => {
if (t.getHandlerFunction() == 'createMyEvent') {
ScriptApp.deleteTrigger(t);
}
});
ScriptApp.newTrigger('createMyEvent').timeBased().onMonthDay(d).atHour(1).create();
}
推荐阅读
- java - 当用户在android中访问互联网时如何找到“无”互联网数据
- android - 即使我指定了另一个主题,我的 activity_main.xml 仍然使用默认主题
- asp.net-mvc - 如何删除 Html.Raw 的 html 标签
- linux - 使用 Linux 可加载内核模块的系统调用拦截(劫持)
- c++11 - 具有意外行为的智能指针
- java - 如何解决我的 android 应用程序中的对齐问题
- sql - SQL 数据库系统
- mongodb - 结构中的省略不省略
- python - python2.7如何覆盖子类中的属性,但维护超类的方法?
- c# - 如何将事件从 UserControl 传递给它的一个孩子?