我正在尝试在Google日历中创建一个重复发生的事件,但始终收到以下错误:无法将数组转换为(class)[]
问题在于我试图从单元格中获取数据以填充类。代码如下:
var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks([rep]);
var ne4 = c.createAllDayEventSeries(title, start, recur4, options);
现在,变量rep等于单元格H2,其中包含以下文本:31,36
当我放入Logger.log(rep);它输出31,36,所以那里也没有问题。
当我取出rep并放在方括号中的31,36中时,脚本可以完美运行并将事件添加到日历中,因此我知道问题不在脚本中的其他任何地方。
我认为问题与单元格中的格式有关,但我不知道。任何帮助将不胜感激。
更新
好的,所以根据下面的评论,我将脚本更改为以下内容:
var sp = rep.split(",");
for(var i=0; i<sp.length; i++) { sp[i] = +sp[i]; }
var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks(sp);
var ne4 = c.createAllDayEventSeries(title, start, recur4, options);
这消除了错误,但是现在它每个星期五都添加事件。在调试器中,它现在显示该数组是一个整数数组,其结果如下所示:[31,36]应该代表我需要的两周时间,但是仍然无法正常工作,并且recur4仍然是未定义的,而不是对象
更新
根据人们在下面的评论,可以正常运行的最终脚本如下:
var recur4 = CalendarApp.newRecurrence().addYearlyRule().onlyOnWeeks(rep.split(",")).onlyOnWeekday(CalendarApp.Weekday.FRIDAY);
var ne4 = c.createEventSeries(title, start, stop, recur4, options);
答案 0 :(得分:1)
EventRecurrence
规范存在的问题是,您指定此事件应每周重复一次,但是使用的限制与每周限制不兼容。
如果用文字描述病情,请注意您不能避免说“年份”。这有力地表明您的复发周期可能不正确。 例如。 “每年在31和36周的每周重复一次此活动”与“在每年31和36周的每周重复一次此活动”
实际上,将限制从每周更改为每年都会产生有效的RecurrenceRule
:
var recur = CalendarApp.newRecurrence()
.addYearlyRule()
.onlyOnWeeks(rep.split(",").map(
function (week) {
return parseInt(week, 10);
})
);
参考文献:
PS:EventRecurrence
和RecurrenceRule
类几乎可以互换。