【发布时间】:2020-09-23 14:56:32
【问题描述】:
请参阅下面的代码:它设置为在日历事件上更新。 但是事件仍在复制到工作表上。 你能看看我哪里出错了吗?
只获取新创建的事件 - 有没有办法按创建日期(现在)获取事件?
}
var events = calendar.getEvents(start, end);
var eventDetails = [];
var eventarray = new Array();
for(var i = 0; i<events.length; i++){
eventDetails.push([events[i].getLocation(), events[i].getTitle(), events[i].getDescription(), events[i].getStartTime()]);
}
var startRow = sheet.getLastRow();
var startCol = 2;
for(var j = 0; j<eventDetails.length; j++){
var tempRange = sheet.getRange(startRow+j,startCol, 1, 4);
var eventArray = new Array(eventDetails[j]);
tempRange.setValues(eventArray);
}
//Here lies the problem code//
for(i in eventDetails){
var row = eventDetails[i];
var duplicate = false;
for(j in eventArray){
if(row.slice(0,2).join() == eventArray[j].slice(0,2).join()){
duplicate = true;
}
}
}
if(!duplicate){
eventArray.push(row);
{
return eventArray;
ss.sort(2, true);
}
}
}
【问题讨论】:
-
我认为您正在使用非常复杂的代码来完成一项非常简单的任务。你能澄清一下你想完成什么吗?您想附加新创建的事件,这些事件仍然不在工作表中(当然,忽略已经存在的事件)?您能否提供一份您正在处理的电子表格的副本,不含敏感信息?
-
@lamblichus 我是脚本的菜鸟,这是一个非常重要的项目。代码对我来说似乎也很复杂。我只想将从日历添加的新事件放入工作表中。这是一个副本 [链接] (docs.google.com/spreadsheets/d/…)
-
我还是不明白你的困境。因此,您正在从日历中检索一些事件(某些日期之间的事件)。你想把这些事件写到你的工作表上。但问题来了:
duplicates是什么意思?之前复制到工作表中的事件,因此您不想再次复制它们? -
row.slice(0,2).join() == eventArray[j].slice(0,2).join()查找这些重复项的目的是什么?row和eventArray都来自eventDetails,所以我不明白你为什么要比较它(你没有检查以前添加到工作表中的事件)。为什么slice(0,2)?您是否只需要检查location和title即可查看哪些是重复的?我觉得您的问题很容易解决,但首先有必要了解您到底想要完成什么。 -
我想将事件从日历写入工作表。将新事件添加到日历时,我希望工作表仅将新事件写入工作表,而不是将所有事件重新写入工作表。我试过了,它也不起作用: var row = eventDetails[i] var duplicate = false; for(j in eventArray){ if (row == eventArray[j]){ duplicate = true; } } if (!duplicate){ eventArray.push(row);}
标签: google-apps-script google-sheets duplicates google-calendar-api google-sheets-api