【发布时间】:2018-07-26 22:31:49
【问题描述】:
我的代码有问题。看起来很好,但它不起作用,我真的不知道为什么。我什么都试过了。
我想将我的 google excel 与我的 google 日历同步。一切正常,但现在我想在只编辑空白单元格时在日历中制作事件:
if (e.oldValue == null) { // also tried if(e.oldValue == undefinded)
var date = new Date(dayRange);
cal.createAllDayEvent(
e.value,
date,
)
}
而且效果很好。但是接下来我想在删除单元格时从日历中删除事件(所以它又是空白的):
else if(e.value==null){
var events = cal.getEvents(date, {
search: ss.getRange(row,2)
});
for (i in events){
events[i].deleteEvent();
}
在我“删除”日历中的单元格后,我得到下一个带有闪烁标题的事件,但我不知道为什么会创建这个事件。似乎这个“else if”不起作用。我真的不知道为什么。我阅读了所有示例,代码似乎还可以。
这就是我创建触发器的方式:
function createEditTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('ToCalendar')
.forSpreadsheet(ss)
.onEdit()
.create();
}
我将非常感谢所有的建议。
编辑
完整代码:
function ToCalendar(e) {
var ss = SpreadsheetApp.getActiveSheet();
var cal = CalendarApp.getCalendarById("myID");
var range = e.range;
var column = range.getColumn();
var row = range.getRow();
var day = ss.getRange(1,column);
var dayRange = day.getValues();
if ((e.value != null) && (e.oldValue == null)) {
var date = new Date(dayRange);
cal.createAllDayEvent(
ss.getRange(row,2).getValue(),
date,
{
description: e.value,//ss.getRange(row, column).getValue(),
}
)
}
//If we edit cell:
else if(e.oldValue!=undefined){
var events= cal.getEventsForDay(date,{search: e.oldValue});
var ev= events[0];
Logger.log(ev);
ev.deleteEvent();
cal.createAllDayEvent(ss.getRange(row,2).getValue(),date,
{description: ss.getRange(row, column).getValue()})
// If we delete cell
else if((e.value == null) && (e.oldValue != null)){
var events = cal.getEvents(date, {
search: ss.getRange(row,2)
});
for (i in events){
events[i].deleteEvent();
}
}
创建触发器:
function createEditTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('ToCalendar')
.forSpreadsheet(ss)
.onEdit()
.create();
}
【问题讨论】:
标签: javascript google-apps-script