繁体   English   中英

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

[英]How to make google app script - calendar createEvent() to accept GSheet inputs from cells populated using array formula

几天前,我得到了 Stack Overflow 的帮助,修改了我当时用于根据 Google 工作表上的信息制作日历事件的 Apps 脚本代码,以便在相应行的条目出现时勾选复选框,随后仅在以下情况下制作新事件该复选框未选中。

function addEvent() {
  let webinarCalendar = CalendarApp.getCalendarById("blablablablablabla@gmail.com");
  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()所需的参数是title(string)start time(string)finish time(string)description (我认为它在 javascript object 内,也是一个字符串)。 为了确保数据类型在创建数组公式的过程中不会以某种方式发生变化,我使用ISTEXT()交叉检查了单元格,并且所有输入都返回了TRUE

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

如果有人可以告诉我导致此问题的原因并帮助我解决它,我将不胜感激。

我不知道为什么它以前有效,但startTimeendTime应该是Date

我已检查您的列是否为String

参考:

createEvent(标题,开始时间,结束时间,选项)

对于尝试运行脚本的人来说,一个根本原因可能是当日期格式设置为英国时,您可能使用的是美国语言环境。 (例如,App Script 正在寻找的日期是 mm/dd/yyyy tt:tt:tt,但如果您单击公式单元格,它会显示为 dd/mm/yyyy tt:tt:tt) 电子表格日期格式

您要做的是转到文件 > 常规 > 区域设置 >(选择的国家/地区)> 保存设置。

然后,您将重新加载页面并尝试脚本现在是否正在运行而没有“找不到方法 createEvent(字符串,字符串,字符串)”错误。

在您的脚本中使用的代码行是:

SpreadsheetApp.getActive().setSpreadsheetLocale('en_UK');

您可以将它包含在您的 onOpen 触发函数中。

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

这只是说它正在读取数据类型不正确的数据。 在这种情况下,或许可以尝试使用“new Date(entry[x])”来封装相应的开始和结束日期/时间条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM