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

基于单元格条件创建Google日历事件的代码修改求助

修改Google日历事件创建脚本:条件执行+重复防护

完整修改后代码

function Assignee1() {
    /* for order of material */
    var sheet = SpreadsheetApp.getActive();
    var orderSheet = sheet.getSheetByName('Order of Material');
    var setupSheet = sheet.getSheetByName('Setup');
    var calendarId = setupSheet.getRange('H4').getValue();
    var targetCalendar = CalendarApp.getCalendarById(calendarId);
    var allData = orderSheet.getDataRange().getValues();
    var startProcessingRow = 4; // 跳过前3行表头,从第4行开始处理

    // 移除前3行非数据内容
    allData.splice(0, 3);
    
    allData.forEach(function(rowData, index) {
        // 检查B列(数组索引1)非空,且K列(数组索引10)为空
        if (rowData[1] !== '' && rowData[10] === '') {
            // 创建日历事件:标题取D列(索引3),开始时间B列(索引1),结束时间C列(索引2)
            targetCalendar.createEvent(rowData[3], rowData[1], rowData[2]);
            // 标记K列(第11列)为"Scheduled",避免重复执行
            orderSheet.getRange(startProcessingRow + index, 11).setValue('Scheduled');
        }
    });
};

关键改动说明

  • 条件过滤逻辑:新增判断,仅当Order of Material工作表的B列(对应数组索引rowData[1])不为空,且K列(对应数组索引rowData[10])为空时,才执行日历事件创建操作
  • 重复执行防护:事件创建成功后,立即将对应行的K列设置为"Scheduled",后续脚本运行时会跳过已标记的行
  • 代码可读性优化:重命名了部分变量(如ss改为orderSheet),添加注释明确各列对应的数组索引,便于后续维护
  • 拼写错误修正:将原代码中的calenderId修正为标准拼写calendarId,避免潜在的命名混淆

内容的提问来源于stack exchange,提问作者Daniel Akpojiyovwi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:35:20