使用复选框添加日历事件 [英] Add calendar event with the help of checkbox
本文介绍了使用复选框添加日历事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
关于此问题-Not able to create event on Calendar with this script
所有更改后的代码:
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Set up ...', 'myTriggerSetup')
.addToUi();
}
function myTriggerSetup() {
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId()
if (!isTrigger('onSpeEdit')) {
ScriptApp.newTrigger('onSpeEdit').forSpreadsheet(ssID).onEdit().create();
}
}
function isTrigger(funcName) {
var r = false;
if (funcName) {
var allTriggers = ScriptApp.getProjectTriggers();
var allHandlers = [];
for (var i = 0; i < allTriggers.length; i++) {
allHandlers.push(allTriggers[i].getHandlerFunction());
}
if (allHandlers.indexOf(funcName) > -1) {
r = true;
}
}
return r;
}
function onSpeEdit(e) {
var rg = e.range;
if (rg.getRow() == 57 && rg.isChecked() && rg.getSheet().getName() === "Course") {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Course');
var start = new Date(spreadsheet.getRange('U70').getValue()).getTime();
var end = new Date(spreadsheet.getRange('X69').getValue()).getTime();
var name = spreadsheet.getRange('U69').getValue()
var calend = CalendarApp.getDefaultCalendar();
calend.createEvent(name, new Date(start), new Date(end));
rg.uncheck();
}
}
我的需求:
用户将填写所有3个单元格以获取活动详细信息。然后,他们将勾选复选框,事件应该被添加,复选框也应该取消勾选。然后,另一个用户将再次执行相同的过程。
我的问题:
它在虚拟工作表中工作,但不在主工作表中工作。我上面的代码是根据主工作表编写的。
虚拟工作表:https://docs.google.com/spreadsheets/d/1_f_dujqIvmkXXLAqyandEmrWOxgskIfk9KTSKw28UuA/edit#gid=0
谢谢: 谢谢你们,Mike和Tanaike,你们做出了惊人的努力来帮助我。
推荐答案
试试
function onOpen() {
SpreadsheetApp.getUi().createMenu('⇩ M E N U ⇩')
.addItem('👉 Set up ...', 'myTriggerSetup')
.addToUi();
}
function myTriggerSetup() {
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId()
if (!isTrigger('onSpeEdit')) {
ScriptApp.newTrigger('onSpeEdit').forSpreadsheet(ssID).onEdit().create();
}
}
function isTrigger(funcName) {
var r = false;
if (funcName) {
var allTriggers = ScriptApp.getProjectTriggers();
var allHandlers = [];
for (var i = 0; i < allTriggers.length; i++) {
allHandlers.push(allTriggers[i].getHandlerFunction());
}
if (allHandlers.indexOf(funcName) > -1) {
r = true;
}
}
return r;
}
function onSpeEdit(e) {
var rg = e.range;
if (rg.getRow() == 4 && rg.isChecked() && rg.getSheet().getName() === "Course") {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Course');
var start = new Date(rg.offset(-2,0).getValue()).getTime();
var end = new Date(rg.offset(-1,0).getValue()).getTime();
var name = rg.offset(-3,0).getValue();
var calend = CalendarApp.getDefaultCalendar();
calend.createEvent(name, new Date(start), new Date(end));
rg.uncheck();
}
}
这篇关于使用复选框添加日历事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!