阻止谷歌脚本复制从工作表转移到日历的事件
Posted
技术标签:
【中文标题】阻止谷歌脚本复制从工作表转移到日历的事件【英文标题】:Stop google script from duplicating events transferred from sheets to calendar 【发布时间】:2021-10-19 20:58:35 【问题描述】:我已经搜索过 SO,这个话题之前已经出现过,但我还没有找到任何适合我的东西。我有一个谷歌表格文档,我在其中跟踪事件和这些事件开始的日期。我设置了一些脚本来将我在工作表文档中创建的任何事件转移到日历中。我遇到的问题是脚本运行时,它会添加工作表上的所有内容。这是一个问题,因为它每次运行时都会创建重复项。有没有办法进行设置,以便我的脚本只添加我的日历上不存在的新事件。
这是我的代码:
function createCalendarEvent()
var ctCalendar = CalendarApp.getCalendarById('v6utsrj3up5givjadrd1ce83qs@group.calendar.google.com');
var sheet = SpreadsheetApp.getActiveSheet();
var event = sheet.getDataRange().getValues();
var startRow = 2;
var numColumns = sheet.getLastColumn();
var complete ="Added";
var showCheck = [];
event.splice(0,1);
for(x=0; x<event.length;x++)
var showNumber = [9];
if(stopDuplicate == complete)
showCheck.push(showNumber);
var newEvent = event[x];
var eventName = newEvent[10];
var eventStart = newEvent[11];
var stopDuplicate = newEvent[14]
if(showCheck.indexOf(showNumber == 0))
showCheck.push(showNumber);
var currentCell = sheet.getRange(startRow + x, numColumns );
ctCalendar.createAllDayEvent(eventName, eventStart);
currentCell.setValue(complete);
This is the Sheet With my events
【问题讨论】:
您可能想检查是否已经存在相同的事件,或者在工作表中添加一列作为标志,显示它是否已经创建。 【参考方案1】:function createCalendarEvent()
const cal = CalendarApp.getCalendarById('v6utsrj3up5givjadrd1ce83qs@group.calendar.google.com');
const sh = SpreadsheetApp.getActiveSheet();
const numColumns = sh.getLastColumn();
const evs = sh.getRange(sr, 1, sh.getLastRow() - sr + 1, numColumns).getValues();
const sr = 2;
evs.forEach((r,i) =>
if(r[14] != "Done")
cal.createAllDayEvent(r[10],r[11]);
sh.getRange(i + sr, 15).setValue("Done");
);
【讨论】:
这正是我想要的。看起来我可能过于复杂了?绝对更干净的代码。谢谢!以上是关于阻止谷歌脚本复制从工作表转移到日历的事件的主要内容,如果未能解决你的问题,请参考以下文章