使用复选框添加日历事件 [英] Add calendar event with the help of checkbox

查看:0
本文介绍了使用复选框添加日历事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

关于此问题-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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆