1

Google Apps Script を使用して管理されるワークフロー プロセスの一部として、Google カレンダーから 1 日の議題を抽出しようとしてgetEventsForDay()、CalendarApp サービスから呼び出します。

具体的な (単純化された) 例:

var calendarView = CalendarApp.getCalendarById(ScriptProperties.getProperty("calendarID"));
var today = new Date();
var todaysEvents = calendarView.getEventsForDay(today);

これにより、すべての日のイベントが正常に配列todaysEventsに取り込まれますが、繰り返しがクエリ内の日付にまたがるが、その日自体には発生しない、前後の繰り返しイベントも含まれます。(水をクエリすると、月、火、金の定期的なイベントが返されます)

カレンダーを GMT/BST で実行しているため、これがDate()日付を UTC ではなく PDT として返す機能であるかどうかを調べましたが、どちらの方向にも 24 時間を超えるイベントが返される場合があります。

これがバグではないと仮定すると、返された配列からこれらの「無効な」イベントを除外する良い方法を見つけることができません。あなたはできる?

それともこれはバグですか?

ありがとう

4

1 に答える 1

3

ジョナサン、

私たちはそれを理解しています。内部的には、終日のイベントは UTC で表されるため、現在のタイム ゾーンに応じて前日または翌日のいずれかに影響します。これを整理している間、次の回避策を実行します。

var startOfDay = new Date();
startOfDay.setUTCHours(0);
startOfDay.setMinutes(0);
startOfDay.setSeconds(0);
startOfDay.setMilliseconds(0);  
var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);

var events = CalendarApp.getDefaultCalendar().getEvents(startOfDay, endOfDay)

現時点ではこれが最適なエクスペリエンスではないことは承知していますが、必要なことは実行できるはずです。これを関数に抽象化できます。

于 2012-08-09T16:37:14.723 に答える