You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets同步Calendar脚本问题:单日多事件被覆盖求修复

修复Google Sheets到Google Calendar同步脚本的重复覆盖问题

原脚本的问题在于:当检测到目标日期已有事件时,会删除所有标题不匹配的事件并创建新事件,导致同一天的其他不同标题事件被误删,无法共存。以下是修复后的脚本,核心逻辑改为仅当日期内不存在相同标题的事件时才创建新事件,保留其他不同标题的事件:

function sheet2calendar() {
  // 设置表格和日历
  var spreadsheet = SpreadsheetApp.getActive().getSheetByName('LIST OF ALL COMPANIES');
  var calendarID = spreadsheet.getRange("R1").getValue();
  var calendar = CalendarApp.getCalendarById(calendarID);

  var movies = spreadsheet.getRange("A2:o2004").getValues();

  for (let x = 0; x < movies.length; x++) {
    var entry = movies[x];
    var startTime = new Date(entry[8]);
    var eventLength = 24; // 小时
    var endTime = new Date(startTime.getTime() + eventLength * 60 * 60 * 1000);

    var movie = entry[2] + ' communication with client';
    var description1 = entry[3] + " " + entry[14];

    if (movie === '') continue;

    // 获取当天所有事件
    var conflicts = calendar.getEvents(startTime, endTime);
    let eventExists = false;

    // 检查是否已有相同标题的事件
    for (let c = 0; c < conflicts.length; c++) {
      var conflict = conflicts[c];
      if (conflict.getTitle() === movie) {
        eventExists = true;
        // 可选:如果需要更新已有事件的描述,取消下面注释
        // conflict.setDescription(description1);
        break;
      }
    }

    // 只有不存在相同标题的事件时,才创建新事件
    if (!eventExists) {
      createAllDayEvent(calendar, movie, startTime, endTime, {
        description: description1
      });
    }
  }
}

function createAllDayEvent(cal, title, start, end, { description }) {
  cal.createEvent(title, start, end, { description });
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Sync to Calendar')
    .addItem('Sync Now', 'sheet2calendar')
    .addToUi();
}

关键改动说明

  • 移除了原脚本中删除不匹配标题事件的逻辑,避免误删同一天的其他事件
  • 新增eventExists变量,用于标记目标日期是否已存在相同标题的事件
  • 仅当不存在重复标题事件时,才执行创建操作;如果需要更新已有事件的信息(比如描述),可以取消注释中的更新代码
  • 循环变量使用let替代var,避免作用域问题

内容的提问来源于stack exchange,提问作者Виктория Астратова

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:50:39