フィルタ

カレンダーのフィルタリングは、どのようにしますか?

フィルタは、検索と同じように動作します。カレンダー中のイベントのサブセットを表示するということです。

フィルタはウインドウ左方のステータスエリアにある「フィルタ」タブで利用できます。シードコードカレンダーにははじめから、タイトル、ステータス、リソースの3つのフィルタが用意されています。フィルタの動作を見るには、「ステータス」フィルタの中の項目をクリックします。すると、カレンダーにはそのステータスの項目だけが表示されます。フィルタでは、複数のステータスを選択できることに注意してください。

次は、フィルタの横にある「除外」ボタンをクリックしてみます。すると選択したステータス以外のイベントがすべて表示されます。

「タイトル」フィルタも同様です。「call」と入力すると、「Summary」が「call」で始まるイベントがすべて表示されます。これらのフィルタは、FileMakerでおなじみの「対象レコードの絞り込み」と同じように動作します。

別のフィールドでフィルタをかける

任意のイベントテーブルのどのフィルタでも既存のフィルタを指定できます。フィルタは、統合の際に編集した「Load Calendar Settings - On Startup...」スクリプトでフィールドに割り当てられています。

新たにフィルタを追加できますか?

もちろん、できます。「スタッフ」というフィルタを追加して、1人または複数のスタッフのイベントだけを表示したいと仮定します(自分だけのイベントや、自分のチームのメンバーのイベントなど)。この場合、以下のように設定します。

  1. イベントのテーブルに、スタッフ名のフィールドを作成します。
    イベントのテーブルにスタッフの名前を入力するフィールドがまだないなら、作成します。この例ではフィルタとしてスタッフの名前を使用しますが、スタッフのID番号などを使用することもできます。
  2. スタッフの名前の値一覧を作成します。それから、「CalendarInterface」テーブルに、「FilterGlob_4」という名前のグローバルのテキストフィールドを作成します。
  3. レイアウトモードに切り替え、「Calendar」レイアウトの「フィルタ」タブを選択します。目的のタブを選択できない場合は、「カレンダーのタブ」のセクションを参照してください。
  4. レイアウト上の既存のフィルタのフィールドのうちの1つを複製(コピー&ペースト)します。そしてこのフィールドを「FilterGlob_4」フィールドに変更します。上述の2.で作成した値一覧をこのフィールドで使用できるように書式を設定します。複数の項目を選択できるようにしたい場合は、チェックボックスセットの書式にします。
  5. このフィールドのスクリプトトリガを編集します。スクリプトは変更せずに、パラメータをフィールドの「番号」に変更します(この例では「4」に変更します)。
  6. 「カレンダー」レイアウトの「フィルタ」タブの編集を続けます。「クリア」、「含める」、「除外」ボタンを複製します。新たに作ったフィルタの横に配置し、各ボタンのスクリプトのパラメータをフィールドの「番号」にします(この例では「4」に変更します)。各ボタンの条件付き書式を編集して、新しいフィルタの番号を使用するようにします(この例では「4」に変更します)。
  7. 最後に、「Load Calendar Settings - On Startup...」スクリプトの編集ウインドウを開き、「Maps filters to fields」のコメントを見つけます。新しいフィルタを使用するために、新たに「変数を設定」の行を作成します(この例では「$$sc_FilterField4」です)。「GetFieldName」には新たに作ったフィールドを使用します(この例では「GetFieldName (SampleEvents::StaffName)」です)。
  8. ブラウズモードに切り替え、「Upon Opening」スクリプトを実行します。これで完了です。5個以上のフィルタを作成する場合は、「Apply Filter to Found Set」スクリプトの最初の変数を作成したフィルタの数に変更します。 

カレンダーにあらかじめフィルタをかけて、フィルタがかかった状態で開くことはできますか?

できます。イベントが大量にあって、そのうちの多くがすでに「complete」であったり関係のないものであったりする場合には、カレンダーの処理速度を上げるのにたいへん良い方法です。

「Load Calendar Settings - On Startup --- Edit Configuration Here ---」スクリプトの最後の方に、「Pre-Filter the calendar if necessary」というコメントがあります。その後の4行で、カレンダーに付属のデフォルトのフィルタを2つ設定しています。この設定の行は、無効に設定されています。FileMaker Pro Advancedをお使いであれば、このうちの2つまたは4つを有効にします。FileMaker Pro Advancedをお使いでなければ、必要な2行または4行を作成し直します。

それぞれのペアのうちの1行目(「フィールド設定」)は、フィルタの値をセットしています(この例では「Something」)。2行目(「変数を設定」)は、そのフィルタをカレンダーのエンジンに渡しています。フィルタを有効にするにはこのペアの両方の行が必要ですが、編集が必要なのはペアのうちの1行目だけです(この例では「Something」)。