13

ここ数日、.icsファイルを作成するアプリケーションを作成しました(ical)

これはphpでコード化されており、基本関数(タイムゾーン、Veventなど)は正常に機能しますが、これらのVEVENTにVALARMを追加すると、GoogleカレンダーでもOutlook2010でもカレンダーに通知が追加されません。

icsファイルのスニペット:

BEGIN:VEVENT
UID:f2f5672145d92702c71504ceccf77167@dyndns.org
DTSTAMP:20120420T174122Z
DTSTART;TZID=Europe/Berlin:20120416T081000
DTEND;TZID=Europe/Berlin:20120416T091000
LOCATION:A102 - Teori Frh.
SUMMARY:Hold: 2.B Kemi B
DESCRIPTION:Lærer: Jeppe Byrialsen Jensen (JBJ) Noter: Lab øvelser om alkoholers blandbarhed
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:Hold: 2.B Kemi B
TRIGGER:-P0DT0H30M0S
END:VALARM
END:VEVENT

編集:ファイルからインポートすると機能するようですが、残念ながらWebサイトからインポートする必要があります。

4

6 に答える 6

7

\n同じ問題がありましたが、代わりに各行の最後で使用するサンプル コード スニペットを使用する必要があることがわかりました\r\n

http://severinghaus.org/projects/icv/の iCal バリデーターは、Outlook 2010 でリマインダー アラームが設定されていないことを除いて、iCal ファイルが機能しているにもかかわらず、これを警告として強調しました。

次の iCal ファイルの例は、Outlook 2010 で開いたときに期待どおりに動作し、リマインダーを 1 時間に設定することも含まれています (改行が\r\n.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Keeble Smith//NONSGML GETONCOURT.COM//EN
BEGIN:VEVENT
DTSTART:20130514T190000Z
DTEND:20130514T194000Z
LOCATION:Court 2\, Demo Squash Club
DESCRIPTION:View this court booking on getoncourt.com: http://democlub.getoncourt.com/booking-details/dmo3106
SUMMARY:Squash court booking for John Smith - DMO3106
BEGIN:VALARM
TRIGGER:-PT60M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

エスケープされた特殊文字にも注意してください。TEXT 値で次をエスケープするようにしてください (ただし、EOL インスタンスではありません)。

\  to  \\
;  to  \;
,  to  \,
\n to  \\n
于 2013-05-14T10:35:07.017 に答える
2

私は同じ問題を抱えています。Google カレンダーで作成したカレンダーをエクスポートしましたが、VALARM セクションはエクスポートしたものとまったく同じに見えます。Google側の問題だと思います。この質問がスタック オーバーフローでさらに 2、3 回、回答なしで聞かれるのを見てきました。

于 2012-04-28T01:51:38.043 に答える
1

Microsoft は、Outlook がいくつかの標準アラーム設定を無視すると述べています

これは Outlook 2013 には当てはまらないことがわかりました。以下を削除しました。

アクション:表示 説明:リマインダー

アラームは Outlook 2013 で機能します。

MS Outlook が RFC5545 標準に従っていないか、独自の実装標準に従っていない場合のようです。

于 2014-10-22T03:13:28.723 に答える
1

「登録しない」の意味を明確にしていただけますか。たとえば、コードをコピーしてGoogleカレンダーにインポートすると、イベントのプロパティに Reminder : pop-up 30mn が明確に表示されます。

アラームが発生する予定のアイテムがカレンダーに表示されることを期待していますか。これは、RFC5545 が VALARM の動作として暗示しているものではないと思います。

于 2012-05-10T12:22:11.513 に答える
0

For what it's worth, this is not a bug, per se, but rather a choice the calendar implementers choose that is compatible with the RFC. See http://sourceforge.net/p/dday-ical/discussion/656447/thread/01111137#23c5

I think the fear is that if the action is audio, then the client has to run the attached file (presumably a sound file) when the trigger event occurs. There's no guarantee, though, that the sound file is really a sound file and not something more nefarious.

Now, why it ignores valarms with the action of display, I do not know.

于 2012-09-17T14:57:29.173 に答える
0

誰かがまだこれに問題がある場合。イベントの 15 分前にアラーム付きの Ics。Outlook 2013 でテスト済み。

BEGIN:VCALENDAR
PRODID:-//MyTestProject//EN
VERSION:2.0
BEGIN:VEVENT
SUMMARY;LANGUAGE=sv-se:Room
UID:1af3ef4f-5997-4cf0-bde2-1f8705cfaef1
SEQUENCE:0
BEGIN:VALARM
TRIGGER:-PT15M
DESCRIPTION:Booking
ACTION:DISPLAY
END:VALARM  
CLASS:PUBLIC
DTSTAMP:20190221T132418
DTSTART:20190423T104000
DTEND:20190423T111000  
LOCATION:USA
END:VEVENT
END:VCALENDAR

参照用の c# コードもあります。日時など

var icalStringbuilder = new StringBuilder();
    icalStringbuilder.AppendLine("BEGIN:VCALENDAR");
    icalStringbuilder.AppendLine("PRODID:-//MyTestProject//EN");
    icalStringbuilder.AppendLine("VERSION:2.0");

    icalStringbuilder.AppendLine("BEGIN:VEVENT");
    icalStringbuilder.AppendLine("SUMMARY;LANGUAGE=sv-se:Room");
    icalStringbuilder.AppendLine("UID:" + Guid.NewGuid());
    icalStringbuilder.AppendLine("SEQUENCE:0");
    icalStringbuilder.AppendLine("BEGIN:VALARM");
    icalStringbuilder.AppendLine("TRIGGER:-PT15M");
    icalStringbuilder.AppendLine("DESCRIPTION:Booking");
    icalStringbuilder.AppendLine("ACTION:DISPLAY");
    icalStringbuilder.AppendLine("END:VALARM");
    icalStringbuilder.AppendLine("CLASS:PUBLIC");
    icalStringbuilder.AppendLine($"DTSTAMP:{DateTime.UtcNow:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine($"DTSTART:{starttimeDataTimeFormatVariable:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine($"DTEND:{endtimeDataTimeFormatVariable:yyyyMMddTHHmmss}");
    icalStringbuilder.AppendLine("LOCATION:USA");
    icalStringbuilder.AppendLine("END:VEVENT");
    icalStringbuilder.AppendLine("END:VCALENDAR");
于 2019-02-21T13:50:45.597 に答える