基于单元格条件创建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
相关产品推荐
相关产品推荐

