4

イベントのスプレッドシートを繰り返し処理し、それに応じてカレンダーを変更しています。

を使用setRecurrenceして複数日のイベントを作成できますが、クラスを削除して 1 日のみのイベントに戻す方法がわかりません。

setRecurrenceイベントに複数回適用しても、既存の繰り返しが置き換えられたり再定義されたりすることはなく、追加のクラスが追加され続けるため、知っておくことが重要です。これにより、0 日の繰り返しを適用するなどの単純な回避策を防ぐことができます。

に相当するものを探していevent.removeRecurrence()ます。

4

3 に答える 3

2

このコードは高度なカレンダー サービスを使用します。スクリプト エディタ メニューで有効にする必要があります: リソース/高度な Google サービス ***

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);
}

ここに画像の説明を入力


編集

あなたのコメントに従って、

高度なカレンダー API で使用される ID は、@google.com を含まないため、若干異なることに注意してください。使用する前に、この最後の部分を単純に削除する必要があります。

例 :

[16-02-19 07:22:59:739 CET] ba4a1dub73uqsvhld3abh15f38@google.com
[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);
}
于 2016-02-18T15:17:25.653 に答える
0
ev.removeAllReminders();
ev.deleteEvent();
于 2018-05-26T05:41:06.360 に答える