Google apps script 使用Google Apps脚本制作周期性日历事件时,错误无法将数组转换为(类)[]
我正试图在谷歌日历中创建一个重复事件,但我一直收到以下错误:无法将数组转换为(类)[] 问题在于我试图从单元格中获取数据来填充类。代码如下:Google apps script 使用Google Apps脚本制作周期性日历事件时,错误无法将数组转换为(类)[],google-apps-script,google-calendar-api,Google Apps Script,Google Calendar Api,我正试图在谷歌日历中创建一个重复事件,但我一直收到以下错误:无法将数组转换为(类)[] 问题在于我试图从单元格中获取数据来填充类。代码如下: var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks([rep]); var ne4 = c.createAllDayEventSeries(title, start, recur4, options); var sp = rep.split(","); for
var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks([rep]);
var ne4 = c.createAllDayEventSeries(title, start, recur4, options);
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);
现在,变量rep等于单元格H2,其中包含以下文本:31,36
当我放置Logger.log(rep)时;它输出31,36,因此也没有问题
当我取出rep并将31,36放在括号中时,脚本运行良好,并将事件添加到日历中,因此我知道问题不在脚本中的任何其他地方
我想问题与单元格中的格式有关,但我不知道。任何帮助都将不胜感激
更新
根据下面的评论,我将脚本更改为:
var recur4 = CalendarApp.newRecurrence().addWeeklyRule().onlyOnWeeks([rep]);
var ne4 = c.createAllDayEventSeries(title, start, recur4, options);
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);
EventRecurrence
规范存在的问题是,您指定此事件应每周重复一次,但随后使用的限制与每周限制不兼容
如果你用文字描述你的状况,请注意,你不能不说“年”。这是一个强有力的迹象,表明你的复发期可能是不正确的。
例如,“每年第31周和第36周每周重复此事件”与“每年第31周和第36周重复此事件”
事实上,将您的限制从每周更改为每年会导致有效的复发
:
var recur = CalendarApp.newRecurrence()
.addYearlyRule()
.onlyOnWeeks(rep.split(",").map(
function (week) {
return parseInt(week, 10);
})
);
参考资料:
注:
EventRecurrence
和RecurrenceRule
类几乎可以互换。显示创建rep
的代码。概率是rep
是字符串
,而不是字符串的数组
。您可能只需要.onyonweeks(rep.split(“,”)代码>好,这样就消除了错误,我检查了调试,是的,第一次,它把31,36作为一个字符串,然后,根据你的建议,它把它作为一个数组,但现在的问题是,它只是忽略了数组,每周五放一个事件,而不是只放在8月3日和9月7日(对应于数字31和36周的两个星期五)。在调试器中,recur4只是因为这样做而变得未定义,所以它基本上忽略了.onlyOnWeeks(rep.split(“,”);最后。好的,进一步看,可能是在数组中,数字被当作字符串,因为它给我的数组是[“31”,“36”]因此,问题是如何将这个字符串数组转换成整数数组,并可能修复它。在JavaScript中有很多方法可以从字符串中强制一个数字。