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中有很多方法可以从字符串中强制一个数字。