事件没有在日历中添加

发布于 2025-02-07 05:32:43 字数 838 浏览 0 评论 0原文

我在Google表中有事件和结束日期的名称(没有开始日期)。

列B 是事件的名称,列C 是结束日期。

脚本说执行成功,但在Google日历中没有添加事件。

我是所有者,并拥有完整的权利/许可。

这是脚本:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('Sync to Calendar');
  var item = menu.addItem('Commit', 'syncCalendar');
  item.addToUi();
  }
function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById("calendarid**");
  var name = spreadsheet.getRange('B3:B250').getValue();
  var start = new Date(spreadsheet.getRange('C3:C250').getValue()).getTime();
  var end =  new Date(spreadsheet.getRange('C3:C250').getValue()).getTime();
  eventCal.createEvent(name,new Date(start),new Date(end));
  Logger.log('Reminder is added to your calendar');
}

I have the name for event and end date (without start date) in Google Sheets.

Column B is the name of the event and column C is end date.

The script says execution successful but events are not getting added in Google Calendar.

I am the owner and have full rights/permission.

Here's the script:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('Sync to Calendar');
  var item = menu.addItem('Commit', 'syncCalendar');
  item.addToUi();
  }
function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById("calendarid**");
  var name = spreadsheet.getRange('B3:B250').getValue();
  var start = new Date(spreadsheet.getRange('C3:C250').getValue()).getTime();
  var end =  new Date(spreadsheet.getRange('C3:C250').getValue()).getTime();
  eventCal.createEvent(name,new Date(start),new Date(end));
  Logger.log('Reminder is added to your calendar');
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南街女流氓 2025-02-14 05:32:43

您必须按以下方式进行循环

const cal = '################@gmail.com'

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById(cal);
  var lastRow = spreadsheet.getLastRow()
  var name = spreadsheet.getRange('B3:B' + lastRow).getValues().flat();
  var start = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  var end = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  name.forEach((n, i) => {
    try {
      var id = eventCal.createEvent(n, new Date(start[i].getTime()), new Date(end[i].getTime())).getId();
      console.log(id)
    } catch (e) {
      console.log(i + ' ' + e)
    }
  })
  Logger.log('Reminder is added to your calendar');
}

You have to make a loop as follows

const cal = '################@gmail.com'

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById(cal);
  var lastRow = spreadsheet.getLastRow()
  var name = spreadsheet.getRange('B3:B' + lastRow).getValues().flat();
  var start = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  var end = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  name.forEach((n, i) => {
    try {
      var id = eventCal.createEvent(n, new Date(start[i].getTime()), new Date(end[i].getTime())).getId();
      console.log(id)
    } catch (e) {
      console.log(i + ' ' + e)
    }
  })
  Logger.log('Reminder is added to your calendar');
}

flat()

forEach()

时光沙漏 2025-02-14 05:32:43

在@mike Steelson的帮助下,此脚本正在工作。

但是,当您再次运行代码时,它会在日历中创建重复。

有什么方法可以避免这种情况?

const cal = '[email protected]'

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById(cal);
  var lastRow = spreadsheet.getLastRow()
  var name = spreadsheet.getRange('B3:B' + lastRow).getValues().flat();
  var start = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  var end = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  name.forEach((n, i) => {
    try {
      var id = eventCal.createEvent(n, new Date(start[i].getTime()), new Date(end[i].getTime())).getId();
      console.log(id)
    } catch (e) {
      console.log(i + ' ' + e)
    }
  })
  Logger.log('Reminder is added to your calendar');
}

With the help of @Mike Steelson this script is working.

However, when you run the code again, it creates duplicates in the calendar.

Is there any way to avoid this?

const cal = '[email protected]'

function calendar() {
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var eventCal = CalendarApp.getCalendarById(cal);
  var lastRow = spreadsheet.getLastRow()
  var name = spreadsheet.getRange('B3:B' + lastRow).getValues().flat();
  var start = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  var end = spreadsheet.getRange('C3:C' + lastRow).getValues().flat();
  name.forEach((n, i) => {
    try {
      var id = eventCal.createEvent(n, new Date(start[i].getTime()), new Date(end[i].getTime())).getId();
      console.log(id)
    } catch (e) {
      console.log(i + ' ' + e)
    }
  })
  Logger.log('Reminder is added to your calendar');
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文