首页 > 解决方案 > 谷歌表格到谷歌日历应用脚本帮助/审查

问题描述

我正在尝试创建一个脚本,它从我的 Google 工作表(列、、、、和)中获取日期H,并使用I自定义标题将它们发布到我的 Google 日历中。JKAC

这是一种设置方式,如果我更改工作表中的日期,它应该删除以前创建的事件并添加新事件。

我改编了GimelG 在此处底部的答案中的代码。

到目前为止,使用下面的脚本,我开始获取 column 中的日期I。但我也希望在尝试完成所有其他日期列方面得到帮助。

我也试图让事件的自定义命名如下:

[项目代码 - E 列] + [文档类型 - G 列] + [取自列名,因此对于列 I,它将是“文件日期”]。

我感谢所有和任何帮助我让它工作!

现在我得到一个createAllDayEvent错误。

找不到方法 createAllDayEvent(string,string,object)。(第 30 行,文件“addToCal 的副本”)

这是我的谷歌表

以下是我正在尝试修复和改进的脚本:

function addToCal() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(),
    sheet = ss.getActiveSheet(),
    range = sheet.getActiveRange(),
    row = range.getRow(),
    data = sheet.getRange(row, 1, 1, 40).getValues(),
    date = data[0][8],
    today = new Date(),
    startDate = new Date(today.setMonth(today.getMonth()-1)),
    endDate = new Date(today.setMonth(today.getMonth()+6)),
    calId = 'example@example.com',
    cal = CalendarApp.getCalendarById(calId),
    events = cal.getEvents(startDate, endDate),
    titles = [];

  for (var i = 0, len = events.length; i < len; i++)
    titles.push(events[i].getTitle());

  var order = (data[0][1] + ' - ' + data[0][4] + ' - ' +data[0][6] + ' to ' + data[0][2]),
    index = titles.indexOf(order),
    ok = 1;
  if (index > -1)
  {
    var eventDate = events[index].getAllDayStartDate();
    if (date =='') return events[index].deleteEvent();

    if (eventDate.getTime() == date.getTime()) var ok = 0;
    else events[index].deleteEvent();
  }
  if (ok)
    cal.createAllDayEvent(order, date, {location: data[0][2]}).removeAllReminders();
}

标签: google-apps-scriptgoogle-sheetsgoogle-calendar-api

解决方案


推荐阅读