複数のソース

複数のテーブルから同一のカレンダーにレコードを表示するには、どのようにしますか?

概要

基本的に、ポータルには1つのテーブルオカレンスからのレコードのみを表示できます。ただし、ポータルのベースとなっているテーブルオカレンスに関連づけられている別のテーブルオカレンスから、フィールドをポータルに含めることはできます。

しかしこのカレンダーでは、まったく関連のないテーブルのイベントを含めることができます。カレンダーの「データソース」にあるイベントということです。そのため、電話、ミーティングなどの予定を保存しているイベントのテーブルのソースは、1つかもしれません。そして、仕事の期限を保存するテーブルを2番目のソースとして使う場合もあります。

同一のテーブルから複数のソースを設定することもできます。たとえば、仕事のテーブルに期限を保存し、電話をかける日付も仕事のテーブルに保存してあるとしたら、これらを2つの別々のソースにすることもできます。

さらに、iCalのURLを指定するソースを設定することにより、FileMakerのテーブルでなくてもソースにできます。この場合、iCalのURLをFileMakerのレコードと同時に表示できます。

複数のソースを設定しておくと、ユーザは左方のサイドバーにある「ソース」タブでソースのオン/オフができます。

複数のソースがある場合、カレンダーの処理速度に影響を与えることがあります。使い方に注意してください。

FileMakerの2番目のソースを作成する

カレンダーの各ソースは、レイアウトによって表されています。カレンダーのサンプルファイルのレイアウトのうちのいくつかを見ると、そのことが分かります。「Source No 1」、「Source No 2」という名前のレイアウトがそれです。新たに作成するソースには、このような名前のレイアウトが必要です。

新たにFileMakerのソースを作成する方法は、以下の通りです。

  1. 「Source No 1」レイアウトを複製して、レイアウト名を「Source No 3」(または既存のレイアウトに続く連番の次の番号)と変更します。
  2. レイアウトモードで作業をしていきます。「レイアウト設定」ダイアログで、新たに作ったレイアウトが使用するテーブルを、表示したいレコードのテーブルに変更します。ここでは例として、「Orders」という名前のテーブルと仮定します。

    もともとある「イベント」テーブルを「Orders」テーブルの子どもにすると、注文に対して複数のイベントを表示できることに注意してください。1つの注文に対して1つの事項だけをカレンダーに表示するのであれば(たとえば期限など)、「Orders」自体を1つのソースにするのが最適です。

  3. レイアウトモードで作業を続けます。設定の各タブで、詳細を入力したりソースのフィールドを割り当てたりします。設定できたらブラウズモードに切り替え、各タブでエラーが発生しないか確認します。最初にカレンダーの統合をする際に、イベントのテーブルにどのようにフィールドを追加したかを覚えていますか? 必要なフィールドをすべて揃えるために、このテーブル(ここでは「Orders」)に同じフィールドを追加する必要があります。必要なフィールドは以下の通りです。

    • z_sc_TimestampEndCalc
    • z_sc_TimestampStartCalc

    また、「TimeStart」フィールドに、以下のように計算値が自動入力されるようにしておくとよいでしょう(開始時刻のフィールドがない場合には、作成してください)。

    If ( Self = Time ( 24 ; 0 ; 0 ) ; Time ( 24 ; 0 ; 1 ) ; Self )

    「フィールドに既存の値が存在する場合は置き換えない」のチェックボックスにはチェックを付けないでください。イベントを深夜0時に開始できるようにしたい場合には、この値の自動入力のオプションが必要です。

    「イベントリスト」や「イベント詳細」レイアウトのようにリスト表示でイベントの色を使用したい場合には、サンプルイベントから「z_ColorCalc」フィールドをコピーして自分の「Orders」テーブルに追加し、もともとある「status」フィールドに相当するフィールドとして割り当てます。これが、カレンダー内の色分けに使用しているフィールドです。このカレンダーでは、ステータスとリソースのリストは、すべてのソースで同一のものを共有していることに注意してください。

     
  4. このソースの「イベント詳細」レイアウトを作成します。これは、カレンダーでイベントをクリックした際の表示に使用する、小さいウインドウのレイアウトです(「Required Layout Info」タブで、「display layout」の次に名前を付けたレイアウトです)。イベントをクリックしたときに既存のレイアウト(注文のレイアウトなど)にジャンプさせたい場合でも、小さいサイズの詳細レイアウトを作成することを推奨します。小さいウインドウが開くようにしておくと、ユーザはカレンダーから移動することなくすぐにイベントを見て、見終わったらウインドウを閉じることができるので便利です。このレイアウトにボタンを追加して、さらに情報が必要な場合にはメインのレイアウトにジャンプできるようにします。「イベントにジャンプする」を参照してください。
  5. 「Load Calendar Settings - On Startup --- Edit Configuration Here ---」スクリプトの編集ウインドウを開いて、「Which sources are active by default」のコメントを見つけます。起動時に自分のソースをカレンダーに表示させたい場合は、このコメントの後にある「List ()」関数にソースの番号を追加します。この設定をしない場合、「ソース」タブで使用可能なソースとして表示されますが、そのソースのイベントはユーザがソースをクリックして使用するまではカレンダーに表示されません。
  6. 作成するソースが「Source No 5」までである場合には、これで設定は完了です。ブラウズモードに切り替え、「Upon Opening」スクリプトを実行して使用してください。「Source No 6」以上のソースを作成する場合は、ソース番号をカレンダーにハードコードしているスクリプトをいくつか編集する必要があります(ご面倒をおかけしますが、これによりループよりも処理速度が上がります)。以下のスクリプト中の「Abstract for sources」のコメントの下にソースの数に関する記述があります。

    Insert iCal File Into Calendar { UseExistingData }
    Click in / Drag Event
     「Create a new record」のコメントの後にある、先頭の「Set Variable」
    Clear iCal Variables
    Clear Source Variables
    Clear iCal Parsing Variables

iCalのソース

概要

iCalのソースを新たに作成するのも、FileMakerのソースを作成するのとほぼ同じです。「Source No X」レイアウト上で必要な設定はほとんどできるので、ずっと簡単です。

iCalのサンプルを見てみる

サンプルで使用しているURLは、Johnのヨガスタジオのものです。このiCalは、今後2週間のイベントだけを返します(ヨガスタジオがそのように設定したものです)。したがって、このサンプルデータを2009年11月に見てみると、iCalのイベントはまったく表示されません。「今日」に移動してから、「ソース」タブの「Yoga Schedule」をクリックすると、動作を確認できます。

警告

iCalのソースを使用するとカレンダーの処理速度はたいへん低下しますが、特に、更新の頻度が高い場合や(「Source No X」レイアウトでX時間ごとに更新する設定にしておくと影響が低減されます)、URLに過去のコードが大量にある場合には顕著です。iCalのソースを十分な処理速度で使用したい場合には、このiCalのサンプルを編集して(「Source No 2」を編集して)使い始めることもできます。

iCalのURLの取得には、プラグインも必要です。このカレンダーでは無償のScriptMasterプラグインを使用しています。このプラグインはhttp://www.360works.com/scriptmaster/からダウンロードできます。プラグインに付属のマニュアルの指示に従ってください。

iCalのソースを追加する

  1. 「Source No 2」レイアウトを複製し、「Source No 3」(またはソース番号の連番の次の番号を使用)とレイアウト名を変更します。
  2. レイアウトモードで設定のタブのそれぞれを選択し、このソースに必要な詳細を入力します。iCalのイベントは、「status」による色分けはされませんが、必要に応じてソースによって色分けできます。詳しくはこちらを参照してください。
  3. iCalのイベントはすべて「イベント詳細」のWebレイアウトを使用します。そのため、ここですることは何もありません。ただし、表示する情報によっては、このレイアウトを大きくする方がよい場合もあります。
  4. 「Load Calendar Settings - On Startup --- Edit Configuration Here ---」スクリプトの編集ウインドウを開き、「Which sources are active by default」のコメントを見つけます。カレンダーを開くときにソースを表示させたいのであれば、このコメントの後にある「List ()」関数にその番号を追加します。この設定をしない場合、「ソース」タブ上に利用可能なソースとして表示されますが、このソースのイベントはユーザがソースをクリックして使用するまではカレンダーに表示されません。iCalのソースは処理速度が遅いことがあるので(ダウンロードしてから処理されるため)、起動時には動作しないようにする場合もあるでしょう。
  5. 作成しているレイアウトが「Source No 5」またはそれより小さい番号である場合は、これで完成です。ブラウズモードに切り替え、「Upon Opening」スクリプトを実行してから使用してください。「Source No 6」以上の番号のレイアウトを作成している場合は、上述のステップ6を参考にスクリプトを手直ししてください。

これで完了です。

トラブルシューティング

iCalのソースの表示に関して問題がある場合のヒントを、いくつか記載します。

  • URLの最後が「.ics」となっていることを確認します。もしなっていなければ、URLをiCalに追加してみて、iCalの確認のメッセージに適切なURL(「.ics」で終わるURL)を表示させます。そのURLをコピーして使用します。
  • URLは、「webcal://」ではなく、「http://」で始まっていることを確認します(もし「webcal://」なら、「http://」に変更します)。
  • データビューアで「$$sc_iCal[X]」の変数をチェックして、URLからイベントが取得されているかどうかを確認します(「X」はURLで使用するソースの番号です)。何も表示されていなければ、URLが適切な形式でないか、またはURLで指定しているファイルがないということです。
  • 「$$sc_iCal[X]」の変数にデータが表示されている場合は、イベントが現在の年にあることを確認します。iCalShareには「most recent」として期限が切れているとされているカレンダーが大量にあります。イベントが存在する変数で、日付を見つけます。
    • 「DTSTART」の値を探します。日付は「VALUE=DATE:20100214」のようになっていて、これは2010年2月14日を意味しています。
  • 次に、カレンダーでそのイベントに移動して、表示されているかどうかを確認します。