カレンダーにエントリを追加するためのリンクを作成するにはどうすればよいですか?


85

私はこのナイトクラブで働いており、現在彼らのためにウェブサイトを作っています。彼らにはたくさんのイベントがあり、彼らのサイトはイベントを中心にたくさん構築されています。今日、彼らはすべてのイベントのFacebookイベントを作っていますが、「 iCalまたはGoogleカレンダー(またはOutlook)に追加した[カレンダーに追加]ボタン。

カレンダーフィードの作成方法を理解できましたが、新しいカレンダーとして追加されます。人々が「イベントを購読」できるのは良いことですが、すべてのイベントにカレンダーを用意するのは非常に面倒です。そこで、メインカレンダーに簡単に追加できる関数の実装方法を知りたいと思います。mailto:リンクのように考えてください。ただし、可能であればカレンダー用です。

また、私がこのテーマについて話している間、FacebookからWordPressにイベントを自動的にインポートしたり、WordPressからFacebookにイベントをエクスポートしたりできるかどうかは誰にもわかりませんが、それはそれほど重要ではありません。


回答:


53

更新(個人使用は無料):
HTTPSがサポートされるようになりました

各サービスのハウツーを詳述した以下の私の答えは機能しますが、IMOは、AddThisEvent [https://addthisevent.com]のようなサードパーティを使用する方がはるかに簡単です。たくさんのオプションをカスタマイズしたり、Facebookなどに追加したりできます。 残念ながら、彼らは今ではそれを個人的な使用以外の有料サービスにし、これを強制しています。

このようなサードパーティのソリューションは他にもあると思いますが、私はこれにしか話せず、これまでのところうまく機能しています。


Googleカレンダーに追加」の場合、以前は使用できるコードジェネレータフォームがありましたが、その後削除されました。Googleカレンダーのリンクの詳細については、以下のsquarecandyの回答を参照してください。

見通し、それは少し複雑だが、基本的にあなたが作成する必要がある.vcsイベントのデータを含むファイルを、そしてちょうどそのファイルへのリンクを作ります。 ステップバイステップの説明はこちら

iCalのリンクを、あなたはPHPクラスを使用することができ、この1のように、または従わこのページの取扱説明書を作成する方法についてのicsファイル(のiCalファイル)。


14
残念ながら、mailto:foremailのような普遍的な標準がありません。
ハルトナー2011

Googleの「EventPublisherGuide」ページでは、そのURL生成フォームが提供されなくなったようです(残念ながら、Googleのドキュメントの性質上、絶え間なく変更されます)が、@ squarecandyのURL形式は(少なくともGoogleカレンダーでは)問題なく機能します。
chbrown 2014

まあ、彼ら自身のフォームは機能するリンクさえ生成しなかったので、おそらくそれが彼らがそれを削除した理由です。:)
squarecandy 2015

94

デイブの投稿のリンクは素晴らしいです。グーグルリンクに関するいくつかの技術的な詳細をここSOの答えに入れるだけです:

Googleカレンダーリンク

<a href="http://www.google.com/calendar/event?action=TEMPLATE&text=Example%20Event&dates=20131124T010000Z/20131124T020000Z&details=Event%20Details%20Here&location=123%20Main%20St%2C%20Example%2C%20NY">Add to gCal</a>

パラメータは次のとおりです。

  • action = TEMPLATE(必須)
  • テキスト(イベントのURLエンコードされた名前)
  • 日付(ISO日付形式、開始日/終了日-開始時間と終了時間の両方が必要です-ボタンジェネレーターを使用すると、終了時間を空白のままにできますが、1つ必要です。そうでない場合は機能しません。)
    • ユーザーのタイムゾーンを使用するには:20131208T160000 / 20131208T180000
    • グローバル時間を使用するには、UTCに変換してから、20131208T160000Z / 20131208T180000Zを使用します
    • 終日のイベントでは、20131208/20131209を使用できます-ボタンジェネレーターが間違っていることに注意してください。1日の終日イベントの終了日として次の日付を使用するか、終了日を希望する日付に+1する必要があります。
  • 詳細(URLエンコードされたイベントの説明/詳細)
  • 場所(イベントのURLエンコードされた場所-Googleマップが簡単に読み取れるアドレスであることを確認してください)

2018年2月の更新:

これは、APIの相互作用を必要とせずにGoogleカレンダーの新しいGoogleバージョンをサポートしているように見える新しいリンク構造です。

https://calendar.google.com/calendar/r/eventedit?text=My+Custom+Event&dates=20180512T230000Z/20180513T030000Z&details=For+details,+link+here:+https://example.com/tickets-43251101208&location=Garage+Boston+-+20+Linden+Street+-+Allston,+MA+02134

新しいベースURL: https://calendar.google.com/calendar/r/eventedit

新しいパラメータ:

  • テキスト(イベントの名前)
  • 日付(ISO日付形式、開始日/終了日-必須開始時刻と終了時刻の両方が)
    • 開始/終了時刻のあるイベント:20131208T160000 / 20131208T180000
    • 終日のイベントは、あなたが使用することができます20131209分の20131208 -終了日は、終了日がなりたいものは何でも1日でなければなりません
  • ctz(タイムゾーン America / New_Yorkなどの-ユーザーのデフォルトのタイムゾーンを使用するには空白のままにします。ほとんどすべての状況でこれを含めることを強くお勧めします。たとえば、ビデオ会議のリマインダー:異なるタイムゾーンの3人がこのリンクをクリックして設定した場合火曜日の午前10時の「自分の」リマインダーですが、これはうまくいきません。)
  • 詳細(URLエンコードされたイベントの説明/詳細)
  • 場所(イベントのURLエンコードされた場所-Googleマップが簡単に読み取れるアドレスであることを確認してください)
  • 追加(電子メールのコンマ区切りリスト-新しいイベントにゲストを追加します)

ノート:

  • 上記の古いURL構造がここにリダイレクトされるようになりました
  • httpsをサポート
  • タイムゾーンのあるお得な情報
  • +に加えてスペースを受け入れます%20urlencodevs rawurlencodein php-両方とも機能します)

2
興味のある方は、このタイプのGoogleカレンダーリンクを作成するphp関数を作成しました:gist.github.com/squarecandy/26611bbcfc63f9c7e3a7dc45e9145133
squarecandy

2
また、タイムゾーンの日付とctzパラメーターの両方を指定しない限り、タイムゾーンが設定されていないことにも注意してください。詳細:zaclee.net/php/...
ザカリーSchuessler

@squarecandyこれを取得して一度に複数の日付を設定する方法はありますか?たとえば、火曜日から木曜日のような範囲があり、それを3つの別々のイベントとしてカレンダーに表示したい場合はどうでしょうか。
garek0 0718年

@ garek007それは不可能だと思います。それは3つの異なるイベントでなければなりません。オンライン版のGoogleカレンダーの「イベントの追加」画面で実行できないタスクがある場合、この手法を使用することはできません。Google Calendar APIを使用して一度に3つのイベントを追加する方法を理解できるかもしれませんが、これは1つのイベントの「イベントの追加」にリンクしているだけです。
squarecandy 2018年

@squarecandyオーガナイザーも更新したいのですが、このイベント作成リンクでオーガナイザーの詳細を追加する方法はありますか?
NikunjUndhad19年

12

squarecandyのグーグルカレンダーの貢献に追加するには、ここで真新しい

OUTLOOK CALENDAR形式(.icsを作成する必要はありません)!!

<a href="https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&dtstart=20151119T140000Z&dtend=20151119T160000Z&summary=Summary+of+the+event&location=Location+of+the+event&description=example+text.&allday=false&uid=">add to Outlook calendar</a>

試して

要約、場所、説明変数の値をurl_encodeするのが最善です。

知識のために、

YAHOOカレンダーフォーマット

<a href="https://calendar.yahoo.com/?v=60&view=d&type=20&title=Summary+of+the+event&st=20151119T090000&et=20151119T110000&desc=example+text.%0A%0AThis+is+the+text+entered+in+the+event+description+field.&in_loc=Location+of+the+event&uid=">add to Yahoo calendar</a>

試して

サードパーティなしでそれを行うことは、例えば電子メールでそれを使用することなど、多くの利点を持っています。


7
Outlookのリンクが実際には機能しなくなったようです。場所を追加して新しいイベントフォームを表示しますが、他のフィールドには入力しません。
スティーブ

10
@Steveのコメントを拡張するために、Outlookリンクはサーバーに解決されません—DNS解決エラーが発生します。
オーウェンブラッカー2018

4
申し訳ありませんが、この回答を有効にするには、反対票を投じて更新する必要があります。
webaholik

8

これは、イベントを追加する目的で使用するカレンダーに追加サービスです。

  1. アップルカレンダー
  2. Googleカレンダー
  3. 見通し
  4. Outlook Online
  5. Yahoo! カレンダー

追加カレンダーにウェブサイトやカレンダー上のイベントのための」ボタンは、言語に依存しない、タイムゾーンとDST互換性、容易なインストールすることです。最新のすべてのブラウザ、タブレット、モバイルデバイス、およびAppleカレンダー、Googleカレンダー、Outlook、Outlook.com、Yahooカレンダーで完全に機能します。

<div title="Add to Calendar" class="addeventatc">
    Add to Calendar
    <span class="start">03/01/2018 08:00 AM</span>
    <span class="end">03/01/2018 10:00 AM</span>
    <span class="timezone">America/Los_Angeles</span>
    <span class="title">Summary of the event</span>
    <span class="description">Description of the event</span>
    <span class="location">Location of the event</span>
</div>

ここに画像の説明を入力してください


1
絶対に素晴らしい。addevent.com非常に似ていますが、さらに多くのスタイリングオプションがあり、MITライセンスを取得しています。したがって、これは間違いなく私の選択です。そのリンクをありがとう。
Arvid 2016

9
これはaddevent.comと統合されました
Separatrix

-4

プログラムにカレンダーの.ics(iCal)バージョンを作成させてから、この.icsをGoogle、Outlookなどの任意のカレンダープログラムにインポートできます。

この投稿はかなり古いので、わざわざコードを入力する必要はありません。ただし、これを行う方法の概要を説明したい場合は、これについてコメントしてください。


7
可能であれば、このコードの例を本当にいただければ幸いです。Outlook、Gmail、iCalでこれを正確に実行しようとしています
KidCache 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.