如何使谷歌应用程序脚本 - 日历 createEvent() 接受来自使用数组公式填充的单元格的 GSheet 输入

阿俊

几天前,我从堆栈溢出中获得了帮助,以修改我当时用于根据谷歌工作表上的信息制作日历事件的应用程序脚本代码,以便在从相应行中输入条目时勾选复选框,然后仅在以下情况下创建新事件该复选框未选中。

function addEvent() {
  let webinarCalendar = CalendarApp.getCalendarById("[email protected]");
  let calendarSheet = SpreadsheetApp.getActiveSheet();
  let schedule = calendarSheet.getDataRange().getValues();
  schedule.splice(0, 1);

  const k = 16; // colIndex of checkbok col
  const created = schedule.map(e => [e[k]]);
  schedule.forEach(function(entry, i) {
    if (entry[k] == true) { return; }
    webinarCalendar.createEvent(entry[3], entry[14], entry[15], {description: entry[13]});
    created[i][0] = true;
  });
  calendarSheet.getRange(2, k + 1, created.length, 1).setValues(created);
}

这个当前的代码工作得很好,直到 2 天前,当我使用所需的输入更新了 4 个单元格中的 3 个以处理数组公式时,它们会在创建新行条目时自动填充。

应用程序脚本控制台上的错误显示:异常:参数 (String,String,String,(class)) 与 CalendarApp.Calendar.createEvent 的方法签名不匹配。

根据文档,此 createEvent() 所需的参数是标题(字符串)、开始时间(字符串)、完成时间(字符串)和描述(我认为这是一个 javascript 对象,也是一个字符串)。为确保数据类型在创建数组公式的过程中不会以某种方式改变,我使用ISTEXT()交叉检查单元格,并且所有输入都返回TRUE

我进行的第二次试验是将 splice() 从 (0,1) 更改为 (0,2),以便它忽略将数组公式写入单元格的第一行,这也没有解决问题。

如果有人能告诉我是什么导致了这个问题并帮助我解决它,我将不胜感激。

idfurw

我不知道为什么它以前的工作,但startTimeendTimeDate

我已经检查过你的列是String.

参考:

创建事件(标题,开始时间,结束时间,选项)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章