Google Apps Script同步表格到谷歌日历时出现createEvent方法参数不匹配错误
Google Apps Script同步表格到谷歌日历时出现createEvent方法参数不匹配错误
嗨,我来帮你排查这个问题~
你遇到的错误提示其实已经给出了关键线索:参数和CalendarApp.Calendar.createEvent的方法签名不匹配。核心问题出在参数传递的顺序上!
createEvent方法的正确参数顺序是:createEvent(title, startTime, endTime)
也就是先传事件标题,再传开始时间,最后是结束时间。但你当前代码里写的是:
eventCal.createEvent(startTime,endTime,titulo);
把参数顺序完全搞反了,这就导致脚本无法识别对应类型的参数,直接抛出了错误。
另外还有个小细节需要留意:从表格通过getValues()获取的日期,偶尔可能会被解析成字符串(尤其是单元格格式设置不规范时),所以最好确保startTime和endTime是有效的Date对象,可以加个简单的类型校验或转换。
修正后的代码如下:
function SheetsToCalendar() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var hojaCitas = spreadsheet.getSheetByName("BBDD_Citas"); var configCalendar = spreadsheet.getSheetByName("Config"); var calendarID = configCalendar.getRange("C2").getValue(); var eventCal = CalendarApp.getCalendarById(calendarID); var fechaHora = hojaCitas.getRange("A2:B1000").getValues(); var titulos = hojaCitas.getRange("F2:F1000").getValues(); for(x=0; x<fechaHora.length;x++){ var eventos = fechaHora[x]; var nombres = titulos[x]; var startTime = eventos[0]; var endTime = eventos[1]; var titulo = nombres[0]; // 跳过空行,避免创建无效事件 if (!startTime || !endTime || !titulo) continue; // 确保时间是Date类型,如果是字符串则转换 if (typeof startTime === 'string') { startTime = new Date(startTime); } if (typeof endTime === 'string') { endTime = new Date(endTime); } // 修正参数顺序:标题在前,随后是开始、结束时间 eventCal.createEvent(titulo, startTime, endTime); } }
我还额外加了空行跳过的判断,避免处理表格里的空白行引发额外错误。你可以试试这个修正后的版本,应该就能解决参数不匹配的问题啦~
备注:内容来源于stack exchange,提问作者Cristina García
相关产品推荐
相关产品推荐

