web-dev-qa-db-ja.com

javascriptまたはjqueryで.icsファイルを作成する

ユーザーがボタンをクリックしたときに.icsファイルを作成しようとしています。

これまでのところ、私が持っているコードは

msgData1 = $('.start-time').text();
msgData2 = $('.end-time').text();
msgData3 = $('.Location').text();

var icsMSG = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Our Company//NONSGML v1.0//EN\nBEGIN:VEVENT\nUID:[email protected]\nDTSTAMP:20120315T170000Z\nATTENDEE;CN=My Self ;RSVP=TRUE:MAILTO:[email protected]\nORGANIZER;CN=Me:MAILTO::[email protected]\nDTSTART:" + msgData1 +"\nDTEND:" + msgData2 +"\nLOCATION:" + msgData3 + "\nSUMMARY:Our Meeting Office\nEND:VEVENT\nEND:VCALENDAR";

$('.button').click(function(){
    window.open( "data:text/calendar;charset=utf8," + escape(icsMSG));
});

これは.icsファイルをダウンロードしますが、iCalでこれを開こうとすると、ファイルを読み取れないと言われます。

15
joshuahornby10

InsanelyADHDで言及されている ics.js ソリューションを使用しました。

ソリューションの問題の1つは、Chromeがファイルタイプを正しく検出せず、エディターでファイルをテキストとして開こうとしたことです。

ダウンロード機能を変更して、テキストを単に開くようにしました:

window.open( "data:text/calendar;charset=utf8," + escape(calendar));

Githubの私のフォークは icsFormatter.js です

ライセンスに関して:私は元の作者に連絡してGPLを含めました-その後、私もGPLを含めます。

14
smartbart24

このためのオープンソースプロジェクトがあります:

これは100%JavaScriptであり、IE 9以下を除くすべての最新ブラウザーで動作します。

ファイルがどのように機能するかに興味がある場合は、ソースを確認できます。彼らは次のライブラリを使用して重量物を持ち上げます:

7
InsanelyADHD

オーガナイザーアドレスに2つのコロンがあります: "MAILTO :: [email protected]"

これで問題が解決しない場合は、iCalが受信した完全なicalストリームを表示する必要があります。

最後に、start_timeとend_timeが正しい形式を使用していると仮定すると、locationフィールドでは、行を折り返す必要があります( http://tools.ietf.org/html/rfc5545#section-3.1 )、特定の文字をエスケープします( http://tools.ietf.org/html/rfc5545#section-3.3.11 )。言い換えれば、iCalendarライブラリを見てみたいと思うかもしれません。

4
Arnaud Quillaud

データベースから非同期にデータをロードしていたため、ics.jsは機能しませんでした。その後、 ical.js に切り替えて、ics.jsのsaveAs関数と組み合わせて動作しました。ここの誰かが同じ問題を抱えているなら、私にテキストを送ってください、私は例を提供します

0
Andri

icsFormatter を使用しましたが、これはsmartbart24によって言及されました。しかし、バージョン7まではIEをサポートする必要があったため、少し調整する必要がありました。

icsGen (icsFormatterのフォーク)を使用するには、Webサーバーにphp 4または5をインストールする必要があります。

0
RegisteredUser