Google 日历脚本:删除重复发生的事件

2024-02-18

我正在遍历事件电子表格并相应地修改我的日历。

我可以用setRecurrence创建多日活动,但我不知道如何删除该课程并将其恢复为单日活动。

了解这一点很重要,因为显然应用setRecurrence多次重复某个事件不会替换/重新定义现有的重复事件,而是不断在其上添加额外的类。这会阻止简单的解决方法,例如应用 0 天的重复周期等。

我正在寻找相当于event.removeRecurrence().


此代码使用高级日历服务,您必须在脚本编辑器菜单中启用它:ressources/advanced Google Services ***

function ChangeEvent(){
  var calendarId = 'primary';
  var eventId = 'omv6###########e8jbs';
  var event = Calendar.Events.get(calendarId, eventId);
  Logger.log('old recurrence = '+event.recurrence);
  event.recurrence = '';
  Calendar.Events.patch(event,calendarId,eventId);
  Logger.log('new recurrence = '+event.recurrence);
}


EDIT

根据您的评论,

请注意,高级日历 API 使用的 ID 略有不同,因为它不包含 @google.com。您应该在使用之前删除最后一部分。

例子 :

[16-02-19 07:22:59:739 CET] [email protected] /cdn-cgi/l/email-protection
[16-02-19 07:22:59:740 CET] ba4a1dub73uqsvhld3abh15f38

使用一些字符串方法来获取我们需要的结果:

  Logger.log(event.getId());// event is the event you get using calendarApp
  var advancedID = event.getId().substring(0,event.getId().indexOf('@'));
  Logger.log(advancedID);// this ID is for advanced service
}

工作示例:

首先使用calendarApp创建一个重复5天的事件(所以我们处于您的真实情况)使用createEventRec()

检查日历上的活动是否符合预期

然后使用changeEvent()并检查结果

function createEventRec(){
  var cal = CalendarApp.getDefaultCalendar();
  var recurrence = CalendarApp.newRecurrence().addDailyRule().times(5);
  var event = cal.createEventSeries('Dinner with Mary', new Date(),new Date(new Date().getTime()+3600000), recurrence);
  Logger.log(event.getId());
  PropertiesService.getScriptProperties().setProperty('ID',event.getId());
}


function ChangeEventRecurrence(){
  var calendarId = 'primary';
  var ID = PropertiesService.getScriptProperties().getProperty('ID');
  var advancedID = ID.substring(0,ID.indexOf('@'));
  Logger.log(advancedID);
  var event = Calendar.Events.get(calendarId, advancedID);
  Logger.log('old recurrence = '+event.recurrence);
  event.recurrence = '';
  Calendar.Events.patch(event,calendarId,advancedID);
  Logger.log('new recurrence = '+event.recurrence);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 日历脚本:删除重复发生的事件 的相关文章

  • 如何从 JavaScript 中计算 HTML 表格的渲染高度?

    调整窗口大小时 我需要知道表格有多大 以便我可以动态地很好地适应中间的所有其他内容 表格高度仅取决于动态加载的内容 如何在 JavaScript 中计算表格的渲染高度 您可以使用element offsetHeight https deve
  • javascript 使用 onclick 创建按钮

    我正在尝试使用 javascript 创建一个具有 onclick 事件的按钮 该事件调用 head 中定义的函数 该函数接收相对于按钮的 dom 对象作为参数 我该怎么做呢 ex
  • JavaScript 对象引用缓存

    我们的代码库中有很多对象 它们的名称空间是为了避免冲突 Example App local view MyView 在我在代码库中看到的大多数地方 我们使用完整路径来获取对对象的引用 并且这在同一函数中重复多次 Example functi
  • 通过 SVG 背景传递鼠标事件

    我有两个 SVG 元素 每个元素覆盖整个屏幕 html body height 100 svg position absolute top 0 left 0 bottom 0 right 0
  • 如何获取 RxJSSubject 或 Observable 的当前值?

    我有 Angular 2 服务 import Storage from storage import Injectable from angular2 core import Subject from rxjs Subject Inject
  • 使用 NodeJS 让 Discord 机器人发送带有消息的图片

    我有几张照片 全部在 imgur 上 带有直接图像链接 格式 https i imgur com XXXXXX jpg https i imgur com XXXXXX jpg 以及用 NodeJS 制作的 Discord 机器人 我发送这
  • ngModel.$parsers 忽略 ng-model 值末尾的空格

    我有这样的指令 directive noWhitespace parse function parse return restrict A require ngModel link function scope element attrs
  • 为什么将数据存储为元素的属性存在风险?

    我一直在读同样的东西 直接在 DOM 元素上存储属性值是有风险的 因为可能会发生内存泄漏 但有人可以更详细地解释这些风险吗 按属性 我假设您指的是 DOM 元素上的属性 DOM 元素上的自定义属性安全吗
  • 从未定义解构时避免错误

    可以说我有这个代码 const x y point Babel 会将其变成 var point point x point x y point y 这很好 但是如果点未定义怎么办 现在我得到一个错误 Cannot read property
  • 在 JavaScript 中比较表单中的两个数字

    当我尝试比较不同的数字时 数字发生变化 但文本部分保持不变 这只发生在较大 较小的情况下 而不会发生在 NaN 或相等的情况下 这是我的代码 function check var a document getElementById a va
  • jQuery Blur() 在 Chrome 上不起作用

    我在 MacOSX 上运行这个http jsfiddle net q84wv http jsfiddle net q84wv on Chrome最新版本 它不会工作 在 Firefox 上运行时它工作得很好 有什么线索吗 假设您想要aler
  • 空 URL 哈希导致页面在 js 事件上跳转

    我有一个带有下一个和上一个按钮的照片库 如果我的某个 javascript 方法由于某种原因被破坏 那么当单击其中一个按钮时 它会向 url 添加一个哈希值 即 www google com 我知道可以给散列一个 div id 来跳转到页面
  • 对象数组 - 在 Vue.js 生态系统中更新对象的正确方法

    我不确定问题到底出在哪里 但我会看看是否有人可以帮助我理解我的代码出了什么问题 我正在利用 Vuex 商店来跟踪某些不断变化的状态 我这样做如下 import Vue from vue import Vuex from vuex Vue u
  • 使用 JavaScript 的计时器

    我想使用java脚本实现计时器 我想随着间隔的变化而减少计时器 Example假设我的计时器从 500 开始 我想要根据级别减少计时器 例如1 一级定时器应减1 且递减速度应较慢 2 2级定时器应递减2 递减速度应为中等3 3级定时器应减3
  • RTCDataChannel发送方法不发送数据

    我的 RTCDataChannel 遇到一个奇怪的问题 我正在对 WebRTC 进行一些研究 并且已经可以进行 WebRTC 音频 视频聊天 现在我想使用 RTCDataChannel 添加文本聊天和文件共享 我已经像这样创建了 RTCDa
  • 在声明组件选择器时添加指令 - Angular 7

    我正在学习 Angular 并通过单击按钮动态创建组件 我正在尝试使用 Angular Material 的拖放功能来拖动这些创建的组件以对它们进行排序 我的基本组件 html 中有以下代码 div style margin 20px di
  • 有没有办法防止输入 type=“number” 获得多个点值?

    我只想得到十进制值 如 1 5 0 56 等 但它允许多个点 有什么办法可以预防吗 您可以使用pattern属性
  • 使用 jquery 提供附加功能时菜单未正确对齐

    I need to make a mega menu similar to one as show in image below 到目前为止 我已经能够在某种程度上使其发挥作用 例如jsFiddle 在这里 http jsfiddle ne
  • FullCalendar 检查选择日是否有活动?

    我正在使用 Full Calendar js 插件 到目前为止一切顺利 但我想检查开始和结束之间的选择是否有事件 我只需要返回 true 或 false 基本上 如果日期选择中已经存在事件 我想阻止用户创建事件 var calendar c
  • 获取淘汰赛中被点击元素的索引

    获取无序列表中单击元素的索引的最佳方法是什么 让我举个例子 假设我有以下 HTML 代码 ul li p p li ul 现在我有以下 javascript 代码来获取索引 self itemClicked function data it

随机推荐